zoukankan      html  css  js  c++  java
  • 败者树

    败者树

    多路平衡归并带来的问题

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

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

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

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

    可用“败者树”进行优化

    什么是“败者树”

    败者树的构造

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

    败者树的使用

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

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

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

    [lceil log_2k ceil 次 ]

    败者树的实现思路

    知识回顾

  • 相关阅读:
    linux tmux基本操作
    AJAX json集合传入Controller后台
    python 数据读取
    appium
    接口测试设计思路
    python 常用模块
    接口测试程序部分
    测试用例设计思路
    mock_待续
    网站收藏
  • 原文地址:https://www.cnblogs.com/jev-0987/p/13322219.html
Copyright © 2011-2022 走看看