原文:海量數據處理 - 10億個數中找出最大的10000個數(top K問題)

前兩天面試 面學長問我的這個問題 想說TEG的 個面試學長都是好和藹,希望能完成最后一面,各方面原因造成我無比想去鵝場的心已經按捺不住了 ,這個問題還是建立最小堆比較好一些。 先拿 個數建堆,然后一次添加剩余元素,如果大於堆頂的數 中最小的 ,將這個數替換堆頂,並調整結構使之仍然是一個最小堆,這樣,遍歷完后,堆中的 個數就是所需的最大的 個。建堆時間復雜度是O mlogm ,算法的時間復雜度為O ...

2019-02-15 20:10 2 5644 推薦指數:

查看詳情

面試題-10個數找出最大10000個數top K問題

一個較好的方法:先拿出10000個建立小根堆,對於剩下的元素,如果大於堆頂元素的值,刪除堆頂元素,再進行插入操作,否則直接跳過,這樣知道所有元素遍歷完,堆10000個就是最大10000個。時間復雜度: m + (n-1)logm = O(nlogm) 優化的方法:可以把所有10個數據分組 ...

Fri Mar 06 04:19:00 CST 2020 0 1808
利用最小堆找出10個數最大10000個數

最小堆 最小堆是一種完全二叉樹,特點是根節點比兩個子節點都小(或者根節點比子節點都大) 過程 先找10000個數構建最小堆 依次遍歷10個數,如果比最小堆的最小值大,則替換這個最小值,並重新構建最小堆 最后輸入10000個值 時間復雜度 構建最小堆的復雜度為 logn ...

Tue May 01 18:53:00 CST 2018 0 2403
(算法)從10000個數找出最大10

  從10000個整數找出最大10個,最好的算法是什么? 算法一:冒泡排序法   千里之行,始於足下。我們先不說最好,甚至不說好。我們只問,如何“從10000個整數找出最大10個”?我最先想到的是用冒泡排序的辦法:我們從頭到尾走10趟,自然會把最大10個數找到。方法簡單,就不再這里寫 ...

Thu Mar 21 05:10:00 CST 2013 10 19235
海量數據處理top K問題

題目: CVTE筆試題 https://www.1024do.com/?p=3949 搜索引擎會通過日志文件把用戶每次檢索使用的所有檢索串都記錄下來,每個查 ...

Tue Apr 24 17:53:00 CST 2018 0 2449
100個數找出最大10

1、首先一點,對於海量數據處理,思路基本上是確定的,必須分塊處理,然后再合並起來。 2、對於每一塊必須找出10最大,因為第一塊10最大的最小的,可能比第二塊10最大最大的還要大。 3、分塊處理,再合並。也就是Google MapReduce 的基本思想。Google ...

Sun Mar 02 23:58:00 CST 2014 2 13785
如何從100萬個數找出最大的前100個數

1. 算法如下:根據快速排序划分的思想 (1) 遞歸對所有數據分成[a,b)b(b,d]兩個區間,(b,d]區間內的都是大於[a,b)區間內的 (2) 對(b,d]重復(1)操作,直到最右邊的區間個數小於100個。注意[a,b)區間不用划分 (3) 返回上一個區間,並返回此區間的數字 ...

Mon Apr 02 08:12:00 CST 2018 0 1257
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM