外部排序:最佳归并树

  • 思维导图:
  • 归并树的定义:
  • 例:
  • 最佳归并树(本质是一颗哈夫曼树):
  • 所有的初始归并段一定能构造出一颗完美的哈夫曼树吗?
  • 怎么选择补充虚短的个数?

思维导图:

归并树的定义:

例:

另一种理解方式:
1、每个数字代表了一个归并段的长度
2、121就代表了总的数据元素的个数
3、树的深度代表了读或写的次数
4、总的IO的读写次数=(读+写)✖元素个数 = (2+2)×121=484

但是这个只是一颗普通的二叉树,由上图可知,想要IO读写次数最少,就要带权路径长度最优,带权路径长度最优时为哈夫曼树

最佳归并树(本质是一颗哈夫曼树):

当归并树为哈夫曼树时,IO次数最小

所有的初始归并段一定能构造出一颗完美的哈夫曼树吗?

答:不是

我们称这种初始归并段不够而补充的段称为虚短

怎么选择补充虚短的个数?

总的节点个数 = 孩子节点总数+根节点,即:
度为0的节点+度为m的节点 = 孩子节点总数+根节点,即:
n0 + nm = m * nm + 1,即:
n0 = (m-1)nm + 1

数据结构之外部排序:最佳归并树相关推荐

  1. 算法整理:外排序篇-置换选择排序最佳归并树

    目录 置换-选择排序 最佳归并树 外部排序分为几个步骤,首先根据内存将待排序文件分段,然后按照分段依次将每个分段的数据读入内存排序,最后将排序后的分段通过归并算法组合在一起.在排序的过程算法对外存的读 ...

  2. 数据结构(八):排序 | 插入排序 | 希尔排序 | 冒泡排序 | 快速排序 | 简单选择排序 | 堆排序 | 归并排序 | 基数排序 | 外部排序 | 败者树 | 置换-选择排序 | 最佳归并树

    文章目录 第八章 排序 一.排序的基本概念 (一)什么是排序 (二)排序的应用 (三)排序算法的评价指标 (四)排序算法的分类 (五)总结 二.插入排序 (一)算法思想 (二)算法实现 (三)算法效率 ...

  3. 数据结构之外部排序:失败树

    外部排序:失败树 S趟归并总共需要比较的次数1: 失败树的定义: S趟归并总共需要比较的次数2: 总结: 通过失败树来增加归并排序路数从而减少io读写次数 S趟归并总共需要比较的次数1: S是趟数,n ...

  4. 【外排序】外排序算法(磁盘排序、磁带排序) 外存设备结构分析 败者树多路归并 最佳归并树白话讲解

    外排序 外排序概述 外排序的基本方法是归并排序法 例子 总结 存储设备(可忽略) 磁带 磁带结构 磁盘 硬盘结构 块 硬盘上的数据定位 磁盘排序 磁盘排序过程 1.生成初始顺串 方法1(常规方法): ...

  5. dataStructure_外部排序/多路归并/败者树/最佳归并树

    文章目录 外部排序 时间代价:为什么不用二路归并 概念 归并段 小结:每趟归并需要读写磁盘的次数取决于 内存工作区 严格k叉树 k叉树和k路归并的趟数s与初始归并段数量m的关系 提高外部排序性能 k路 ...

  6. 外部排序归并排序 败者树

    一.定义问题 外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的.外部排序最常用的算法是多路 ...

  7. 数据结构之外部排序:归并排序法

    外部排序:归并排序法 思维导图: 外部归并排序的原理: 外部归并排序的性能: 归并排序法的优化: 思维导图: 外部归并排序的原理: 第一步: 第二步: 问题:内存缓存区大小固定,外存数据元素分块后仍然 ...

  8. 数据结构之外部排序:置换-选择排序

    外部排序:置换-选择排序 置换-选择排序算法思想: 步骤: 通过减少归并段r来减少IO次数 置换-选择排序算法思想: minimax就是FO中的最后一个数据元素的大小 1.将工作区填满 2.从工作区选 ...

  9. 数据结构 | 【排序】外部排序

    零.核心部分 1. 实现外部排序的两个过程: 将整个初始文件分为多个初始归并段; 将初始归并段进行归并,直至得到一个有序的完整文件: 2. 时间组成: 内部排序所需要的时间 外存信息读写所需要的时间  ...

最新文章

  1. Facebook数字货币凸显硅谷雄心:打造全球金融操作系统
  2. Goldengate 应用环境 mysql to oracle
  3. TCP协议的粘包问题(数据的无边界性)
  4. strongswan技术
  5. boost::dynamic_bitset模块实现ambiguous set的测试程序
  6. 磁共振线圈分类_收藏:磁共振检查序列及临床应用总结
  7. 如何取得好的软件设计
  8. 【Web后端笔记】SQL Server与java数据类型对应
  9. 2018年全国多校算法寒假训练营练习比赛(第一场)F. 大吉大利,今晚吃鸡——跑毒篇(模拟)
  10. JVisualVM 简介
  11. 如何在整个目录上运行dos2unix?
  12. 环境可靠性测试,气候环境类可靠性试验,可靠性测试标准
  13. iOS第三方支付集成-支付宝支付
  14. 银行卡查询银行卡类型查询及归属地查询
  15. 【第二周】吴恩达团队AI for Medical Diagnosis大作业
  16. saltstack实战--远程执行之返回(returner)
  17. CodeForces - 1485D Multiples and Power Differences (构造+lcm)
  18. Matrix Derivation
  19. Typora软件百度网盘下载地址
  20. 百度之星资格赛1003 度度熊与邪恶大魔王

热门文章

  1. 2018年全国《程序员高考》真题试卷
  2. 经典面试题(36):以下代码将输出的结果是什么?
  3. 浅谈javascript数值类型转换
  4. 正则表达式与html信息提取,基于正则表达式的HTML信息提取.pdf
  5. termux apache php,要啥自行车之Termux:将我们的(Android)安卓手机打造成全能的服务器...
  6. 厦门大学林子雨教授大数据技术原理及应用课程问题处理集锦
  7. 什么?你做的差异基因方法不合适?
  8. ps专业色彩调色扩展面板 Moody Photoshop Panel 1.1.2汉化版
  9. python语言的单行注释以井号开头_python-注释
  10. springboot jwt token前后端分离_7个开源的 Spring Boot 前后端分离项目,一定要收藏!...