1、问题
n(1≤n≤100)个正整数(无序的)中,找出第k(k≤n)小的数。注意,第k小的数意味着从小到大排在第k位置的数。
2、解析
3、设计
int Select(int s[], int low, int high, int k)
{ //得到中间数的下标
int i = partition(s, low, high);
//j为左区间长度
int j=i-low+1;
//位置大就在左区间找,否则就在右区间找
if (j == k)
return s[i];
else if (k<j)
return Select(s, low, i, k);
else return Select(s,i+1,high,k-j);
}