这个题的解法:可以先通过排序得到第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] 
=));
}

 

 3。 第三种方法可以采用算法导论上的SELECT算法。

4。当然 还可以通过插入排序。或者堆都可以弄出来.. 

相关文章: