n×m遍掃瞄
【演算法基本描述】n×m遍掃瞄
【演算法思想】每次都掃瞄一遍陣列,取出最大元素,這樣掃瞄m遍就能得到m個最大的數
【演算法複雜度】o(nm)
排序後取最大m個數
【演算法基本描述】對n個數排序,對拍完序後的序列取m個最大的數
【演算法複雜度】視排序的複雜度,一般為o(nlogn)或o(n^2)
計數排序(bitmap)
一次遍歷陣列記錄出現次數o(n),倒過來變數計算m個。
最小堆【演算法基本描述】一遍掃瞄+最小堆
【演算法複雜度】o(nlogm) 遍歷o(n) 最小堆o(logm)
【其他】如果要求n個數中取最小的m個,只要把演算法反一下即可
【演算法偽**】
00-建立乙個最小堆(優先佇列),最小堆的大小控制在m之內
01-for 每個數:
02-----if 這個數比最小堆的堆頂元素大:
03---------彈出最小堆的最小元素
04---------把這個數插入到最小堆
05-最小堆中的m個元素就是所要求的元素
06-其中最小堆的作用就是保持裡面始終有m個最大元素,且m個元素中最小的元素在堆頂。
從n個數中提取最小的m個數的演算法
從n個數中提取最小的m個數的演算法 2007 02 10 23 58 45 分類 經常在網上看到有人討論這個問題 如何高效地從n個數中提取最小的m個數?或者是其他類似的問題,今天我也簡單地分析一下。具體問題具體分析,既然這個題目只要求我們找出這m個數,沒有要求對其進行排序,所以負擔也就輕了,相應地也...
從m個數中選擇n個數的實現
從m個數中選出n個數來 0 n m 要求n個數之間不能有重複,其和等於乙個定值k。求一段程式,羅列所有的可能。例如備選的數字是 11,18,12,1,2,20,8,10,7,6 和k等於 18 那麼組合的可能有 18 8,10 2,20 12,6 11,7 11,1,6 1,10,7 12,2,8 ...
海量資料中選出最大的N個
前幾天,面試了一家公司,其中出了一道演算法應用題,題是這樣的 有100個檔案,每個檔案裡有10000個資料,選出前100個大的資料 聽到這麼大的資料,第乙個想法就是 堆排,因為這個題很符合堆排的條件 1 大資料 2 選擇前多少個 當我說出堆排的時候,自己也有在想,這麼多的資料,能不能一下全部讀入呢,...