求第k大的數(武大933)

2021-08-20 08:46:39 字數 832 閱讀 2357

若是在鍊錶中求倒數第k個的數,可以使用雙指標法。即:設定兩個指標i和j,先讓j先於i走k個位置,然後i和j同時移動,直到j指向最後乙個元素,那麼i指向的即是鍊錶中的倒數第k個元素。

/**

* @program: entrance_exam

* @description: 兩個整數遞增有序序列a,b分別有n個和m個元素,求第k大的數(k≥1&&k≤n+m),要求最佳的時間複雜度

* @author: tao

* @create: 2018-05-30 08:30

**//**演算法思想:1.符合歸併排序的思想,直接將a,b進行歸併排序,然後在新的陣列裡面尋找第k大的元素,時間複雜度0(m+n);

* * 方法二:直接在a,b兩個陣列設定兩個指標i,j,直接比較陣列元素大小,若a[i]>b[j],則j++,否則i++

* 直到比較k次,即找到第k大的數

* * */

class findkth

private int c=new int[7];

public int mergesort(int a,int b,int k)

while (iwhile (jreturn c[k-1];

}}public class exercise11 ;

int b=new int;//定義兩個單增的陣列

//int c=new int;

findkth findkth=new findkth();

int kth=findkth.mergesort(a,b,3);

system.out.println(kth);

}}

求第K大的數

已知 n個數字各不相同,求其中第 k大的數是多少?1 k n 10000 這是一道簡單的試題,我們完全可以套用常用的快速排序模型來解決,即對所有數字進行排序,然後取出第 k大的數字輸出即可,該演算法的時間複雜度為o nlog2n 快速排序的基本思想關鍵在於不斷調整使分治點左邊的數不大於 或不小於 分...

求第k大的數

求第k大的數 給定乙個長度為n 1 n 1,000,000 的無序正整數序列,以及另乙個數k 1 k 1,000,000 關於第k大的數 例如序列中第3大的數是4。輸入第一行兩個正整數m,n。第二行為n個正整數。輸出第k大的數。樣例輸入 copy 6 31 2 3 4 5 6 樣例輸出 copy 4...

第k大的數,前k大的數

1 排序後去出前k個,o n log n 如果k2 o nlog k 快排把數分為了兩個部分,所以考慮兩個情況,如果大的部分的個數 k,說明只要繼續在大的部分找就可以了,如果大的部分的個數3 o nlog maxv minv delta 平均為o nlogn 轉化為找第k個,假設最大的數為maxv,...