求助3个WA1个TLE。
思路:二分判断左或右。
用快速排序的方法:
a,b,c,d
c为基准,a,b<=c<=d
#include<bits/stdc++.h>
using namespace std;
const int N=5e6+10;
int n,k;
int a[N];
int quick_sort(int l,int r,int number){
if(l==r) return a[l];
int i=l-1,j=r+1,m=a[l+(r-l)/2];
while(i<j){
while(a[++i]<m);
while(a[--j]>m);
if(i<j) swap(a[i],a[j]);
}
if(i==number) return a[i];
else if(i<number) return quick_sort(i+1,r,number-i);
else return quick_sort(l,i-1,number);
}
int main(){
cin>>n>>k;
k++;
for(int i=1;i<=n;i++) cin>>a[i];
cout<<quick_sort(1,n,k);
return 0;
}