有意思的算法題:有10個文件,每個文件大概有10G,求里面最大的100個數;


算法思路 1:

第一個階段:對於單個10G文件而言

1. 初始化:先取100個數,構建最小堆;

開始比較:

2. 取一個數 A,與最小堆的根節點進行比較;

3. 如果 A > 最小堆根節點,則替換根節點,否則,重復第2步進行下一輪比較;

4. 替換根節點后,重新構建最小堆

5. 重復以上2,3,4步驟,直至比較完整個文件的數字;

以上步驟可以獲取該10G文件的100個最大的數字,10個文件用10個線程同時執行;

第二個階段:對10個文件的各自的100個數,總共1000個數,進行第二輪比較

6. 我的思路還是通過以上1-5部的思路獲取最終結果;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM