#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int patiton(vector<int> &ivec,int left,int right);
int main()
{
vector<int> ivec;
int x;
while(cin>>x)
{
ivec.push_back(x);
}
int K;
cin>>K;
int left=0,right=ivec.size()-1;
int index=patiton(ivec,left,right);
K=ivec.size()-K; //注意这行
while(index !=K)
{
if(index<K)
left=index+1;
else
right=index-1;
index=patiton(ivec,left,right);
}
cout<<ivec[K];
return 0;
}
int patiton(vector<int> &ivec,int left,int right)
{
int i=left-1;
int pivot=ivec[right];
for(int j=left;j<right;j++)
{
if(ivec[j]<=pivot)
{
i++;
swap(ivec[i],ivec[j]);
}
}
swap(ivec[i+1],ivec[right]);
return i+1;
}
来源: http://www.bubuko.com/infodetail-2280301.html