题解
2024-06-20 17:56:08
发布于:广东
109阅读
0回复
0点赞
#include <iostream>
using namespace std;
const int N =5e6+10;
int a[N];
int n,k;
int partition(int a[],int l,int r){
int m=a[l];
while(l<r){
while(l<r&&a[r]>=m)r--;
a[l]=a[r];
while(l<r&&a[l]<=m)l++;
a[r]=a[l];
}
a[l]=m;
return l;
}
void QuickSort(int a[],int l,int r){
int pos =partition(a,l,r);
if(k<pos)QuickSort(a,l,pos-1);
else if(k>pos)QuickSort(a,pos+1,r);
else{
printf("%d",a[k]);
return ;
}
}
int main() {
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
QuickSort(a,0,n-1);
return 0;
}
这里空空如也
有帮助,赞一个