AcWing 786. 第k个数
原题链接
简单
作者:
aKun_0
,
2024-09-23 23:24:37
,
所有人可见
,
阅读 1
#include "iostream"
using namespace std;
void quicksort(int q[], int left, int right);
int main()
{
int n, k;
scanf("%d%d", &n, &k);
int q[n];
for (int i = 0; i < n; i++) {
scanf("%d", &q[i]);
}
quicksort(q, 0, n - 1);
cout << q[k - 1] << endl;
}
void quicksort(int q[], int left, int right)
{
if (left >= right) {
return;
}
int x = q[left + right >> 1];
int l = left - 1, r = right + 1;
while (l < r) {
while(q[++l] < x);
while(q[--r] > x);
if (l < r) {
swap(q[l], q[r]);
}
}
quicksort(q, left, r);
quicksort(q, r + 1, right);
}