原文:O(N)的時間尋找最大的K個數

尋找N個數中最大的K個數,本質上就是尋找最大的K個數中最小的那個,也就是第K大的數。 可以使用二分搜索的策略來尋找N個數中的第K大的數。對於一個給定的數p,可以在O N 的時間復雜度內找出所有不小於p的數。 尋找第k大的元素: 如果所有N個數都是正整數,且它們的取值范圍不太大,可以考慮申請空間,記錄每個整數出現的次數,然后再從大到小取最大的K個。比如,所有整數都在 , MAXN 區間中的話,利用一 ...

2012-08-06 10:59 4 13700 推薦指數:

查看詳情

算法題004 尋找最大K個數

尋找最大K個數 題目描述   有很多個無序的數,怎么選出其中最大的若干個數?   即,從n個數中選出最大K個數。 解法一   先假設元素的數量不大,例如在幾千個左右,在這種情況下,我們就排序吧。   在這里,快速排序或堆排序都是不錯的選擇,他們的平均時間復雜度都是O ...

Tue Mar 12 08:37:00 CST 2013 0 6403
尋找最大K個數,Top K問題的堆實現

尋找最大K個數,如果所有的數據全部可以放入內存,就可以使用random select算法在線性時間尋找K大的數,再得到最大K個數。 參考:http://www.cnblogs.com/luxiaoxun/archive/2012/08/06/2624799.html 如果不能把 ...

Tue Sep 11 18:09:00 CST 2012 2 7790
找出N個數中最小的k個數問題(復雜度O(N*logk))

這是一個經典的算法題,下面給出的算法都在給定的數組基礎上進行,好處時不用分配新的空間,壞處是會破壞原有的數組,可以自己分配新的空間以避免對原有數組的破壞。 思路一 先直接排序,再取排序后數據的前k個數。 排序算法用最快的堆排序,復雜度也會達到O(N*logN). 當k ...

Sun Nov 03 22:49:00 CST 2013 15 5832
N個降序數組,找到最大K個數

問題定義 這個問題來自網上看到的百度算法題,感覺很不錯,問題定義如下: 假定有20個有序數組,每個數組有500個數字,降序排列,數字類型32位uint數值,現在需要取出這10000個數字中最大的500個,怎么做? 解決方法 這里其實有很多解決方法,笨拙的或者巧妙的。這里介紹一個非常不錯 ...

Thu Jun 19 00:19:00 CST 2014 0 3445
求1到n的質數個數O(n)

也許更好的閱讀體驗 \(\mathcal{AIM}\) 我們知道: 對於一個合數\(x\) 有\(x=p^{a_1}_1*p^{a_2}_2*...*p^{a_n}_n\) 現在給出一個\(n\) 求\(x\in[1,n]\),所有\(x\)分解出的\(p\)的冪數和 例如 \(n=12\) \(2=2^1\) \(3=3^1\) \(4=2^2\) \(5=5^1\) \(6=2^1*3^ ...

Sun Jun 02 05:24:00 CST 2019 0 529
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM