这道题考验的是分治算法,非常的《简单》,上代码:
#include<bits/stdc++.h>
using namespace std;
int a[20000000],n,m;//定义变量
void qsort(int l,int r){//快速排序
int i=l,j=r,flag=a[(i+j)/2],tmp;
do{
while(a[j]>flag) j--;
while(a[i]<flag) i++;
if(i<=j){
swap(a[i],a[j]);
i++;j--;
}
}while(i<=j);
if(n<=j) qsort(l,j);
else if(i<=n) qsort(i,r);
else{
printf("%d",a[j+1]);
exit(0);
}
}
int main()//主函数
{
scanf("%d%d",&m,&n);
for(int i=0;i<m;i++) scanf("%d",&a[i]);
qsort(0,m-1);
return 0;//好习惯retur 0;
}