可以算是快速排序的变种
#include <iostream>
int array[10]={4,2,3,5,7,5,3,4,9,6};
int quickselect(int k,int start,int end)
{
if(start>=end){
return -1;
}
int midle=array[start];
std::swap(array[start],array[end]);
int left=start-1,right=end;
while(true){
while(array[++left]<midle){continue;}
while(array[--right]>midle){continue;}
if(left<right){
std::swap(array[left],array[right]);
}else{
break;
}
}
std::swap(array[left],array[end]);
if(left==k){
return array[left];
}
if(left>k){
quickselect(k,start,left);
}else{
quickselect(k-left,left+1,end);
}
}
int main()
{
int s=quickselect(0,0,9);
getchar();
}