我对一个主题感兴趣,假设我们有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的合并排序的文档发送给一个文件