时间复杂度O(n)
#include <stdio.h>
int SearchKth(int a[],int L,int R,int k)
{
int i=L,j=R;
int pivot=a[i];
while(i<j)
{
while(i<j&&a[j]>=pivot) --j;
a[i]=a[j];
while(i<j&&a[i]<=pivot) ++i;
a[j]=a[i];
}
a[i]=pivot;
if(i==k-1) return a[i];
else if(i<k-1) SearchKth(a,i+1,R,k);
else SearchKth(a,L,i-1,k);
}
int main()
{
int a[]={9,4,5,7,3,6,2,1,8};
int k=3;
int ans=SearchKth(a,0,8,k);
printf("the k-th number is %d", ans);
return 0;
}