將一個大文件分割爲小文件,對小文件進行內存排序,在對排序後的小文件做合併即可。關於合併,可以採用堆來實現,堆中存儲每個小文件中的最小值,以此從堆中取出最小值,輸入到結果文件,同時從最小值對應文件中取出下一個最小值,保持堆依然存儲每個小文件的最小值。
如果只需要對文件按鍵值分組(不關心鍵之間的順序),則採用哈希函數,將不同的鍵值對應的記錄劃分到不同的文件,對子文件進行排序即可,然和直接合並子文件即可。多路歸併排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
動態規劃之揹包問題(一)
hawstein
2018-08-27 19:56:16
8大排序算法JAVA實現
Kang_Nian
2018-08-27 19:25:21
MergeSort歸併排序遞歸、迭代、原地 c++實現
jiuqlo
2018-08-27 19:10:49
PAT(Basic Level) Practise (中文)1005. 繼續(3n+1)猜想 (25)
jiuqlo
2018-08-27 19:10:48
排序基礎算法總結與c++實現
jiuqlo
2018-08-27 19:10:47
Java如何實現八個常用的排序算法
Ajian_IronSide
2018-08-27 18:09:27
最長公共子序列
Ajian_IronSide
2018-08-27 18:09:25
揹包問題
Ajian_IronSide
2018-08-27 18:09:25
並查集(Union-Find)算法介紹 Algorithm 4th Part 1
wyf920621
2018-08-27 18:01:36
B樹
njdragonfly
2018-08-27 17:11:25
布隆過濾器(Bloom Filter)
njdragonfly
2018-08-27 17:11:25
八皇后問題
njdragonfly
2018-08-27 17:11:23
如何判斷一棵二叉樹是完全二叉樹
njdragonfly
2018-08-27 17:11:23
24小時熱門文章