題目:100億個整數(shù),求最大的1萬個數(shù),并說出算法的時間復雜度 算法:如果把100億個數(shù)全部讀入內(nèi)存,需要100 0000 0000 * 4B 大約40G的內(nèi)存,這顯然是不現(xiàn)實的?! ∥覀兛梢栽趦?nèi)存中維護一個大小為10000的最小堆,每次從文件讀一個數(shù),與最小堆的堆頂元素比較,若比堆頂元素大, 則替換掉堆頂元素,然后調(diào)整堆。最后剩下的堆內(nèi)元素即為最大的1萬個數(shù),算法復雜度為O(NlogN) 實現(xiàn):從文件讀數(shù)據(jù)有講究,如果每次只讀一個數(shù),效率太低,可以維護一個輸入緩沖區(qū),一次讀取一大塊數(shù)據(jù)到內(nèi)存, 用完了又從文件接著讀,這樣效率高很多,緩沖區(qū)的大小也有講究,一般要設為4KB的整數(shù)倍,因為磁盤的塊大小一般 就是4KB維護一個大根堆
100億個數(shù)取出最大的10000個
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關閱讀更多精彩內(nèi)容
- 教你如何迅速秒殺掉:99%的海量數(shù)據(jù)處理面試題 本文經(jīng)過大量細致的優(yōu)化后,收錄于我的新書《編程之法》第六章中,新書...
- 從三月份找實習到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
- 前兩天面試3面學長問我的這個問題(想說TEG的3個面試學長都是好和藹,希望能完成最后一面,各方面原因造成我無比想去...
- 概述 我們都知道一個進程是與其他進程共享CPU和內(nèi)存資源的。正因如此,操作系統(tǒng)需要有一套完善的內(nèi)存管理機制才能防止...
- 一、溫故而知新 1. 內(nèi)存不夠怎么辦 內(nèi)存簡單分配策略的問題地址空間不隔離內(nèi)存使用效率低程序運行的地址不確定 關于...