60分求助。。。。

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

seven7777 @ 2021-02-20 18:39:30

#include<bits/stdc++.h>
using namespace std;
int a[500005]={0};
int main()
{
    int n,k;
    cin>>n>>k;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    sort(a,a+n);    //快速排序 
    cout<<a[k]<<endl;
    return 0;
}

by _caiji_ @ 2021-02-20 18:43:29

卡常,吸氧,能过,不过还是建议不用 sort,练习一下分治。


by justinjia @ 2021-02-20 18:53:17

@seven7777 @caijianhong 这题的考点在于快排每次只排一半(根据 k 的取值判断排哪边)。


by CGDGAD @ 2021-02-20 18:53:48

sort -> nth_element


by 123456zmy @ 2021-02-20 19:03:24

数组大小少了一个0(

另外不建议 int a[500005]={0};,全局变量默认是 0,并且这么写会让可执行文件大小爆炸


by _caiji_ @ 2021-02-20 19:13:51

@justinjia 这就是分治


by justinjia @ 2021-02-20 20:14:31

@NSObject

请尽量不要使用nth_element来写本题,因为本题的重点在于练习分治算法。

请问您有没有看见这句话


by justinjia @ 2021-02-20 20:15:08

@caijianhong #pragma GCC optimize(3)


|