int Partion(int data[],int start,int end)
{
int key=data[start];
int i=start,j=end;
while(i<j)
{
while(i<j&&data[j]>=key)
j--;
if(i<j)
data[i]=data[j];
while(i<j&&data[i]<=key)
i++;
if(i<j)
data[j]=data[i];
}
data[i]=key;
return i;
}
void quicksort(int data[],int start,int end)
{//快速排序
if(data==NULL||start>end) return ;
int index=Partion(data,start,end);
quicksort(data,start,index-1);
quicksort(data,index+1,end);
return ;
}
int findKth(int data[],int start,int end,int k)
{//第k个数,使用快排的思想
if(data==NULL||start>end) return -1;
int index=Partion(data,start,end);
int num=index-start+1;
if(num==k)
return data[index];
else if(num>k)
return findKth(data,start,index-1,k);
else if(num<k)
return findKth(data,index+1,end,k-num);
}