我对一个主题感兴趣,假设我们有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. 合并排序的文件与FIFO的
- 2. 合并排序中的合并部分
- 3. 多线程合并排序
- 4. 多线程合并排序
- 5. 读取,合并和排序.csv文件
- 6. 有效合并排序文件
- 7. 合并排序中的基本条件
- 8. 合并排序的文件不知道文件名
- 9. 递归合并排序Java程序
- 10. 合并排序程序错误
- 11. 在Java中合并排序
- 12. 在Python中合并排序
- 13. 如何将合并排序转换为并行合并排序
- 14. Git从合并中排除文件
- 15. 合并排序java
- 16. 合并排序R
- 17. 并行合并排序
- 18. 错误的合并排序
- 19. 合并排序的数组
- 20. 合并排序的列表
- 21. 二元合并排序&天然合并排序
- 22. Ant:从合并的jar文件中排除文件
- 23. C++合并排序不会合并?
- 24. 合并列表和“合并”排序
- 25. 从合并进程中排除配置文件
- 26. 合并排序不排序数组
- 27. 罐推荐和排序(排序合并)
- 28. COBOL如何排序和合并两个无序文件?
- 29. 多线程快速排序或合并排序
- 30. 合并排序中的参数传递