题目
答案
#include<iostream>
using namespace std;
int partition(int a[],int start,int end)
{
int l=start,r=end;
int tmp=a[l];
while(l<r)
{
while(l<r&&a[r]>=tmp) r--;
a[l]=a[r];
while(l<r&&a[l]<=tmp) l++;
a[r]=a[l];
}
a[l]=tmp;
return l;
}
void find(int a[],int left,int right,int k)
{
int tmp=partition(a,left,right);
if(tmp+1==k) cout<<a[tmp];
else
{
if(tmp+1<k) find(a,tmp+1,right,k);
else find(a,left,tmp-1,k);
}
}
int main()
{
int n,k;
cin>>n>>k;
int a[n],i;
for(i=0;i<n;i++)
cin>>a[i];
find(a,0,n-1,k);
}