33,010
社区成员
发帖
与我相关
我的任务
分享
int split(int a[], int low, int high )
{
int i,j,x;
i=low;
x = a[low];
for(j=low+1;j<=high;j++)
{
if(a[j] <= x)
{
i++;
if( i != j)
{
int temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
int tp1 = a[low];
a[low] = a[i];
a[i] = tp1;
return i;
}
int find_kth_max_number(int *a, int low ,int high, int k)
{
int m = split(a, low, high);
if ( m - low + 1 == k)
return a[m];
else
{
if(m - low + 1 > k)
find_kth_max_number(a, low, m, k);
else
find_kth_max_number(a, m+1, high, k-(m - low + 1) );
}
}