include [HTML_REMOVED]
const int N = 1e6 + 10;
int q[N];
int k,n;
//前面的步骤和快速排序类似,q[N]为全局变量因此不需要传参
int quick_sort(int l,int r,int k)
{
if(l >= r) return q[l];
int x = q[(l+r)/2],i = l - 1,j = r + 1;
while(i < j)
{
do i++;while(q[i] < x);
do j–;while(q[j] > x);
if(i < j)
{
int t = q[i];
q[i] = q[j];
q[j] = t;
}
}
//到递归这步时,先计算出左侧区间有多少个数,如果k在左侧那么仅对左侧进行递归排序,反之亦然。
int sl = j - l + 1;
if(k <= sl) return quick_sort(l,j,k);
return quick_sort(j+1,r,k-sl);
}
int main()
{
scanf(“%d %d”,&n,&k);
for(int i = 0;i < n;i++) scanf("%d",&q[i]);
printf("%d",quick_sort(0,n-1,k));
}