外部排序和多路归并排序
问题描述:
外部排序针对的是大文件的排序,即内存容量有限的情况下,待排序文件不能一次性放入内存进行排序,需要在内存和外部存储器之间进行多次数据交换,以达到对整个文件进行排序的目的。
外部排序最常用的方法就是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分,分别把每一部分调入内存完成排序。然后,对已经排 序的子文件进行多路归并排序。
算法流程:
将大文件分成n个小文件
分别放入内存排序,得到n个有序文件
建立一个小顶堆
将每一部分文件的最小元素加入堆中,此时堆顶元素就是n个文件中的最小元素
将堆顶元素弹出,并将堆顶元素所在文件的下一个元素加入堆中
重复4和5直到所有文件读取结束
复杂度:
空间复杂度:小顶堆所占用空间$O(k)$
时间复杂度:$O(knlogk)$,$logk$为堆的高度,$kn$为添加到堆中的总结点数。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BRUCE!



