我對一個主題感興趣,假設我們有8個文件,每個文件包含10億個整數,我們應該將這些文件合併成80億個整數文件,每個文件中的所有文件都進行排序。當然,如果我們做8次合併,任務很簡單,但是我的問題是,文件的重要排序是什麼,我們應該在哪個順序上進行組合?例如,在開始時,不是合併第一個和第二個文件,創建新的M文件並與第三個文件合併,也許有時候合併第二個和第三個文件,然後與第一個文件合併會更有利嗎?我想我的問題很清楚。合併過程中的文件排序問題?如果是這樣,我們如何選擇最優的?合併過程中的文件排序
0
A
回答
1
這可能是最佳做一個8路合併排序沒有中間文件。打開8個文件句柄,找到所有8個最小的整數,將其寫入輸出文件並讀取該文件中的下一個整數。您可能可以使用插入排序來管理8個源的8個元素的數組(持有文件句柄和讀取的最後一個值)。
就排序而言,如果您一次只能合併兩個文件,我可能會先合併最小的文件。簡化你的例子,你可以看到爲什麼。
假設您有3個文件,其中有1,2和100條記錄。
如果合併1 & 2與3所記錄的臨時文件,然後合併,與100,你已經閱讀106條記錄,並書面103
如果改爲合併1 & 100轉換成101個記錄的臨時文件,然後將其與2合併,您將讀取204條記錄並寫入103.
相關問題
- 1. 合併排序gzipped文件
- 2. 合併排序的文件與FIFO的
- 3. 將排序文件合併到hadoop中的單個排序文件中
- 4. 合併兩個文本文件排序
- 5. 合併排序中的邏輯流程
- 6. 多線程合併排序
- 7. 多線程合併排序
- 8. 合併排序中的合併部分
- 9. 合併排序文件,最小緩衝
- 10. 有效合併排序文件
- 11. 讀取,合併和排序.csv文件
- 12. 合併排序中的基本條件
- 13. 合併排序
- 14. 如何合併和排序Ruby中的YML文件中的鍵?
- 15. 結合csv文件,按時間排序並平均排序
- 16. 在Python中合併兩個文件並對其進行排序
- 17. 合併排序的文件不知道文件名
- 18. 以特定順序合併文件夾中的所有文檔並對合並後的輸出進行排序
- 19. 合併排序程序錯誤
- 20. 遞歸合併排序Java程序
- 21. 在Java中合併排序
- 22. 合併在Python3中排序
- 23. 在Python中合併排序
- 24. 在JavaScript中合併排序
- 25. 如何將合併排序轉換爲並行合併排序
- 26. 排序的列合併不合並列
- 27. 用於排序大型文本文件的多相合並排序
- 28. Git從合併中排除文件
- 29. 在Mercurial中合併時排除文件
- 30. CouchDB的合併排序的文檔發送給一個文件