• 磁带排序

磁带排序(tape sort)和磁盘排序的主要不同之处在于磁带排序需要充分考虑归并段的分布状况,因为磁带是顺序存取的,所以各归并段分布在不同磁带和同一磁带的不同位置对排序效率影响极大。

  • 多路平衡归并

所谓二路平衡归并(2-way balanced me rge)就是每一趟从m个归段得到「m/2]个归并段,这样的归并树就有「log₂m]+1层,需要对初始数据进行「log2m]遍扫描。做类似的推广,当采用k路平衡归并时,相应的归并树有「logkm]+1层,要对数据进行s=「logkm]遍扫描,显然,k越大,磁盘读写次数越少。在k路平衡归并中,如果采用基于简单选择排序方法,其效率并非k越大归并效果就越好。

利用败者树实现k路平衡归并的过程是先建立败者树,然后对k个输入有序段进行k路平衡归并。
败者树(tree of loser)是一棵有k个叶子结点的完全二叉树(可将大根堆看成胜者树),其中叶子结点存储参与归并的记录,分支结点存放关键字对应的段号。所谓败者是两个记录比较时关键字较大者,胜者是两个记录比车较时关键字较小者。

建树

数据结构(知识点碎片四十一)_败者树

数据结构(知识点碎片四十一)_败者树_02

  • 最佳归并树

数据结构(知识点碎片四十一)_败者树_03

 每一次归并都要进行两次I/O操作。

数据结构(知识点碎片四十一)_大根堆_04

数据结构(知识点碎片四十一)_败者树_05