全RE,求助!!!!!!

P1923 【深基9.例4】求第 k 小的数

justinjia @ 2020-11-29 19:52:44

为各位大佬献上代码:

#include"stdio.h"
int a[5000000];
void quicksort(int start,int end,int k){
    if(start==end){
        a[k]=a[start];
        return;
    }
    int t,i=start,j=end;
    const int pivot=a[(start-end)/2];
    do{
        while(a[i]<pivot)
            i++;
        while(a[j]>pivot)
            j--;
        if(i<=j){
            t=a[i];
            a[i]=a[j];
            a[j]=t;
            i++;
            j--;
        }
    }while(i<=j);
    if(k<=j)
        quicksort(start,j,k);
    else if(i<=k)
        quicksort(i,end,k);
    else
        quicksort(j+1,i-1,k);
}
int main(void){
    int n,k;
    scanf("%d%d",&n,&k);
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    quicksort(0,n-1,k);
    printf("%d",a[k]);
    return 0;
}

by Yaixy @ 2020-11-29 20:01:27

这个头文件什么鬼


by Chinshyo @ 2020-11-29 20:02:41

为啥要自己写sort啊。您可以直接使用这个头文件

#include<algorithm.h>

里面自带 sort 函数。


by Chinshyo @ 2020-11-29 20:03:06

@justinjia


by Chinshyo @ 2020-11-29 20:05:18

@沐雪_yxy 这不是C语言的头文件嘛qwq


by Chinshyo @ 2020-11-29 20:09:50

@justinjia 这道题不建议您使用这种方法,可以用插入排序。这样有简洁速度又快


by joy2010WonderMaker @ 2020-11-29 20:14:24

sort直接解过不了,加个O2快得很。 下面附代码(有解释)。

#include<cstdio>
#include<algorithm>
using std::sort;//大大减少调用时间,在O2里有大用
int main(){
    int n,k;
    scanf("%d%d",&n,&k);//C语言版输入
    int a[n];
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    int u=0;
    sort(a,a+n);
    printf("%d",a[k]);//C语言版输出
    return 0;//结束
}

可能有点问题,但很好用。


by joy2010WonderMaker @ 2020-11-29 20:15:22

@远刃YR彡,插排还是会TLE.


by justinjia @ 2020-11-29 20:18:25

@远刃YR彡 到底为啥RE啊???


by joy2010WonderMaker @ 2020-11-29 20:35:52

@justinjia 你在C++里用C语言头文件……


by cxqghzj @ 2020-11-29 20:58:08

@joy2010 ?不可以吗

而且他不是用的C++啊,他用的C语言


| 下一页