AcWing 786. 第k个数
原题链接
简单
作者:
宫野龟宝
,
2024-03-04 20:28:46
,
所有人可见
,
阅读 20
#include<iostream>
using namespace std;
void quick_sort(int q[], int l, int r)
{
// 判断边界
if (l >= r) return;
// 因为在后面的循环中,采取【先移动,再判断】的策略,所以边界处多取1
int i = l - 1, j = r + 1, x = q[(l + r)/2];
while (i < j)
{
do i ++ ; while (q[i] < x);
do j -- ; while (q[j] > x);
if (i < j) swap(q[i], q[j]);
}
quick_sort(q, l, j);
quick_sort(q, j + 1, r);
}
int main(){
int n,k,q[100010];
scanf("%d%d",&n,&k);
for (int i = 0; i < n;i ++) scanf("%d",&q[i]);
quick_sort(q, 0, n - 1);
printf("%d ",q[k-1]);
return 0;
}