AcWing 786. 第k个数
原题链接
简单
作者:
yoruichi
,
2021-03-09 10:08:50
,
所有人可见
,
阅读 229
C++ 代码
#include <iostream>
using namespace std;
const int N = 1e6+10;
int q[N];
int quickSearch(int q[],int left,int right,int k)
{
if(left == right) return q[left];
else
{
int i=left-1,j=right+1,mid = q[left+right >> 1];
while(i < j)
{
do(i++);while(q[i] < mid);
do(j--);while(q[j] > mid);
if(i < j) swap(q[i],q[j]);
}
quickSearch(q,left,j,k);
quickSearch(q,j+1,right,k);
return q[k-1];
}
}
int main()
{
int n,k;
cin >> n >> k;
for(int i=0;i<n;i++) scanf("%d",&q[i]);
cout << quickSearch(q,0,n-1,k);
return 0;
}