首页 > 其他 > 详细

败者树

时间:2020-07-16 15:43:11      阅读:47      评论:0      收藏:0      [点我收藏+]

败者树

多路平衡归并带来的问题

外部排序时间开销=读写外存的时间+内部排序所需时间+内部归并所需 时间

\[归并趟数S=\lceil log_kr \rceil ,归并路数k增加,归并趟数S减少,读写磁盘总次数减少 \]

使用k路平衡归并策略,选出一个最小元素需要对比关键字(k-1)次, 导致内部归并所需时间增加

8路平衡归并,从八个归并段中选出一个最小元素需要对比关键字7次
技术分享图片

可用“败者树”进行优化

什么是“败者树”

技术分享图片

败者树的构造

败者树——可视为一棵完全二叉树(多了一个头头)。k个叶节点分别是当前参加比较的元素,非叶子结点用来记忆左右子树中的”失败者“,而让优胜者往上继续进行比较,一直到根节点。

败者树的使用

败者树在多路平衡归并中的应用

技术分享图片

技术分享图片

对于k路归并,第一次构造败者树需要对比关键字k-1次

技术分享图片

有了败者树,选出最小元素,只需要对比关键字

\[\lceil log_2k \rceil 次 \]

败者树的实现思路

技术分享图片

知识回顾

技术分享图片

败者树

原文:https://www.cnblogs.com/jev-0987/p/13322219.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!