1574.求第k小数
时限:1000ms 内存限制:10000K 总时限:3000ms
描述
求第k小数
输入
先输入一个小于10000的正整数n,再输入n个整数,最后输入一个小于等于n的正整数k,
输出
输出其中第k小的数。
#include <iostream>
using namespace std;
int n,k;
int a[10000];
int findk(int st,int ed, int k);
int main()
{
cin>>n;
for(int i=0; i<n; i++)
{
cin>>a[i];
}
cin>>k;
cout<<findk(0, n-1, k)<<endl;
return 0;
}
int findk(int st,int ed, int k)
{
//先将数组分成两部分(快排思想)
int key=a[ed];
int left=st;
int right=ed;
while(left<right)
{
while(left<right&&a[left]<=key)
{
left++;
}
while(left<right&&a[right]>=key)
{
right--;
}
if(left<right)