数据结构与算法——第11章-外部排序-最佳归并树(11.4)
一 概述
1 | 1.提高效率 |
二 提高效率
1 | 通过上一节对置换-选择排序算法的学习了解到,通过对初始文件进行置换选择排序能够获得多个长度不等的初始归并段, |
三 对外存的访问次数降到最低
3.1 问题
1 | 本节带领大家思考一个问题:无论是通过等分还是置换-选择排序得到的归并段, |
3.2 3-路平衡归并
1 | 例如,现有通过置换选择排序算法所得到的 9 个初始归并段,其长度分别为:9,30,12,18,3,17,2,6,24。 |
1 | 提示:图 1 中的叶子结点表示初始归并段,各自包含记录的长度用结点的权重来表示;非终端结点表示归并后的临时文件。 |
3.3 赫夫曼树作为3-路归并树
1 | 若想使树的带权路径长度最短,就是构造赫夫曼树。 |
1 | 依照图 2 所示,其对外存的读写次数为: |
四 附加“虚段”的归并树
4.1 附加虚段的最佳归并树
1 | 上述图 2 中所构建的为一颗真正的 3叉树(树中各结点的度不是 3 就是 0),而若 9 个初始归并段改为 8 个, |
4.2 说明
1 | 注意:虚段的设置只是为了方便构建赫夫曼树,在构建完成后虚段自动去掉即可。 |
五 总结
1 | 本章用了 4 节的内容介绍了实现外部排序的两个过程: |
六 参考
- C语言中文网—最佳归并树详解