#include <iostream>
#include <stdio.h>
using namespace std;
int a[5000001],k,n;
void psort(int l, int r);
int main()
{
cin>>n>>k;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
psort(0,n-1);
return 0;
}
void psort(int l, int r)
{
int i=r,j=l;
bool jgti=0;
while(j!=i){
if(jgti){
while(a[j]>a[i]) j--;
jgti=0;
}
else{
while(a[j]<a[i]) j++;
jgti=1;
}
swap(i,j);
swap(a[i],a[j]);
}
if(i==k){
cout<<a[i];
exit(0);
}
if(i<k){
psort(i+1,r);
}
else{
psort(l,i-1);
}
}
这是以右为基准的快排的优化,以左为基准的只能40分,然后看论坛里以中间数为基准的可以拿100,想请各位大佬看看问题,主要是两个大数据都可以400ms过但是头两个小数据超时了总觉得很奇怪。
