美文网首页
胜者树与败者树

胜者树与败者树

作者: 小幸运Q | 来源:发表于2020-05-01 22:20 被阅读0次

http://data.biancheng.net/view/77.html


  • 目的类似大小顶堆输出最大/最小值,保留了之前的比较结果,比堆更能减少比较次数。

  • 节点存放胜者为胜者树,存放败者为败者树

胜者树:

是树形选择排序的一种变形,本身是一棵完全二叉树。

胜者树:在树形选择排序一节中,对于无序表{49,38,65,97,76,13,27,49}创建的完全二叉树如下图所示,构建此树的目的是选出无序表中的最小值。

胜者树.png

败者树:

而败者树恰好相反,其双亲结点存储的是左右孩子比较之后的失败者,而胜利者则继续同其它的胜者去比较。

所示为一棵 5-路归并的败者树,其中 b0—b4 为树的叶子结点,分别为 5 个归并段(已经预先排好了序)中存储的记录的关键字。

败者树
  • 注:为了防止在归并过程中某个归并段变为空,处理的办法为:可以在每个归并段最后附加一个关键字为最大值的记录。这样当某一时刻选出的冠军为最大值时,表明 5 个归并段已全部归并完成。(因为只要还有记录,最终的胜者就不可能是附加的最大值)

  • 存储:

败者树是完全二叉树, 因此数据结构可以采用一维数组。其元素个数为k个叶子结点、k-1个比较结点、1个冠军结点共2k个。ls[0]为冠军结点,ls[1]--ls[k- 1]为比较结点,b[0]--b[k-1]为叶子结点。另外b[k]为一个附加的辅助空间,不属于败者树,初始化时存着MINKEY的值。


  • 败者树分段示例:

待排数据:

image.png

由败者树得知,其最终胜者为 29,设为 MINIMAX 值,将其输出到初始归并文件中,同时再读入下一个记录 14(所有等待中的段头元素中的最小值),调整败者树:

image.png

当进行关键字的比较时,先比较序号,序号小的为胜者;序号相同的关键字值小的为胜者。(序号一开始都初始化为0,相当于段号)

通过不断地向败者树中读入记录,会产生多个 MINIMAX,直到最终所有叶子结点中的序号都为 2,此时产生的新的 MINIMAX 值的序号 2,表明此归并段生成完成,而此新的 MINIMAX 值就是下一个归并段中的第一个记录。

相关文章

  • 胜者树与败者树

    http://data.biancheng.net/view/77.html 目的类似大小顶堆输出最大/最小值,保...

  • 败者树与胜者树

    败者树与多路归并排序: 我们把败者树分为两部分:b[]:用来保存K路数组的首元素,叶节点存放在此处,即底下那七个数...

  • 环环相扣的计算机基础

    为了写多路归并的算法,不得不去看胜者树败者树;为了看胜者败者树,去复习了堆排序算法;为了温习堆排序,不得不看了选择...

  • 多路归并与胜者树败者树

    多路归并从 O(nk) 到 O(nlogn) 的优化切入点为在每次寻找最值上。我们可以利用堆、胜者树败者树这种每次...

  • 胜者与败者的心态

    今天补看葡萄牙与乌拉圭的小组赛。临近终场,上演“上帝之发”的C罗被换下。 以往,葡萄牙国家队主教练是不会在时间所剩...

  • 2017-05-30

    坚持可能就是我们通往成功最大的障碍,也是胜者与败者最大的差别

  • 2017-05-30

    坚持可能就是我们通往成功最大的障碍,也是胜者与败者最大的差别

  • 忆秦

    天地玄黄,日月更替。中华大地,上下五千。尧舜禹,宋元明清。历朝万代,战争风云。胜者王,败者寇。胜者,荣华美姬。败者...

  • 我输了大半辈子,却感觉赢了一个世界。

    01 在各种博弈中,决出了胜负,便产生了胜者和败者。 成王败寇,胜者拥有了掌声和欢呼;败者或失望离去,或谦逊站着为...

  • 计算机经典算法——锦标赛排序算法

    关键词:二叉树生活中的淘汰锦标赛:在单淘汰的锦标赛中,选手们两两比赛,胜者晋级,败者被淘汰。比如世界乒乓球锦标赛或...

网友评论

      本文标题:胜者树与败者树

      本文链接:https://www.haomeiwen.com/subject/hhytghtx.html