这个题的解法:可以先通过排序得到第K个数即是第K大数。
第二种解法就是利用快速排序的partition,这是一种随机算法,最坏情况下是n平方的,但是 平均情况下是 线性的。
代码如下:
//此划分的原理为,默认将地位的数据保存,然后利用这个位置作为缓冲,
//不断赋值。其中start永远指向空位。最后将保存的数据放入空位即可
int partition(int s[],int start,int end)
{
cout<<start<<" "<<end<<endl;
int p = (start+end)/2 ;
int t = s[p];
s[p] = s[start];
s[start] =));
}
//不断赋值。其中start永远指向空位。最后将保存的数据放入空位即可
int partition(int s[],int start,int end)
{
cout<<start<<" "<<end<<endl;
int p = (start+end)/2 ;
int t = s[p];
s[p] = s[start];
s[start] =));
}
3。 第三种方法可以采用算法导论上的SELECT算法。
4。当然 还可以通过插入排序。或者堆都可以弄出来..