为了讲解方便,这里假设内存只能存放3个整数,文件里有12个整数,文件里的整数是
50 | 60 | 10 | 70 | 15 | 30 | 20 | 80 | 25 | 40 | 35 | 45 |
1.先读取3个整数到内存中,构建小顶堆,将最小值写入文件中,然后从剩余的9个整数中读取一个放到内存中,如果这个数比刚写入到文件中的数大,则把这个数插入到小顶堆中,重新调整小顶堆结构,将最小值写入文件中,否则把这个数暂放在一边不处理。这样可以保证文件中的整数是排好序的。
(1)
(2)
(3)
(4)
(5)
此时文件1的写入就结束了。
(6)
(7)
与文件1的写入过程一样,最终文件2的内容是:
15 | 20 | 25 | 30 | 35 | 40 | 45 | 80 |
2.对新生成的文件采用多路归并排序。
(1)
(2)
......
(3)