数据结构之外部排序:最佳归并树
外部排序:最佳归并树
- 思维导图:
- 归并树的定义:
- 例:
- 最佳归并树(本质是一颗哈夫曼树):
- 所有的初始归并段一定能构造出一颗完美的哈夫曼树吗?
- 怎么选择补充虚短的个数?
思维导图:
归并树的定义:
例:
另一种理解方式:
1、每个数字代表了一个归并段的长度
2、121就代表了总的数据元素的个数
3、树的深度代表了读或写的次数
4、总的IO的读写次数=(读+写)✖元素个数 = (2+2)×121=484
但是这个只是一颗普通的二叉树,由上图可知,想要IO读写次数最少,就要带权路径长度最优,带权路径长度最优时为哈夫曼树
最佳归并树(本质是一颗哈夫曼树):
当归并树为哈夫曼树时,IO次数最小
所有的初始归并段一定能构造出一颗完美的哈夫曼树吗?
答:不是
我们称这种初始归并段不够而补充的段称为虚短
怎么选择补充虚短的个数?
总的节点个数 = 孩子节点总数+根节点,即:
度为0的节点+度为m的节点 = 孩子节点总数+根节点,即:
n0 + nm = m * nm + 1,即:
n0 = (m-1)nm + 1
数据结构之外部排序:最佳归并树相关推荐
- 算法整理:外排序篇-置换选择排序最佳归并树
目录 置换-选择排序 最佳归并树 外部排序分为几个步骤,首先根据内存将待排序文件分段,然后按照分段依次将每个分段的数据读入内存排序,最后将排序后的分段通过归并算法组合在一起.在排序的过程算法对外存的读 ...
- 数据结构(八):排序 | 插入排序 | 希尔排序 | 冒泡排序 | 快速排序 | 简单选择排序 | 堆排序 | 归并排序 | 基数排序 | 外部排序 | 败者树 | 置换-选择排序 | 最佳归并树
文章目录 第八章 排序 一.排序的基本概念 (一)什么是排序 (二)排序的应用 (三)排序算法的评价指标 (四)排序算法的分类 (五)总结 二.插入排序 (一)算法思想 (二)算法实现 (三)算法效率 ...
- 数据结构之外部排序:失败树
外部排序:失败树 S趟归并总共需要比较的次数1: 失败树的定义: S趟归并总共需要比较的次数2: 总结: 通过失败树来增加归并排序路数从而减少io读写次数 S趟归并总共需要比较的次数1: S是趟数,n ...
- 【外排序】外排序算法(磁盘排序、磁带排序) 外存设备结构分析 败者树多路归并 最佳归并树白话讲解
外排序 外排序概述 外排序的基本方法是归并排序法 例子 总结 存储设备(可忽略) 磁带 磁带结构 磁盘 硬盘结构 块 硬盘上的数据定位 磁盘排序 磁盘排序过程 1.生成初始顺串 方法1(常规方法): ...
- dataStructure_外部排序/多路归并/败者树/最佳归并树
文章目录 外部排序 时间代价:为什么不用二路归并 概念 归并段 小结:每趟归并需要读写磁盘的次数取决于 内存工作区 严格k叉树 k叉树和k路归并的趟数s与初始归并段数量m的关系 提高外部排序性能 k路 ...
- 外部排序归并排序 败者树
一.定义问题 外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的.外部排序最常用的算法是多路 ...
- 数据结构之外部排序:归并排序法
外部排序:归并排序法 思维导图: 外部归并排序的原理: 外部归并排序的性能: 归并排序法的优化: 思维导图: 外部归并排序的原理: 第一步: 第二步: 问题:内存缓存区大小固定,外存数据元素分块后仍然 ...
- 数据结构之外部排序:置换-选择排序
外部排序:置换-选择排序 置换-选择排序算法思想: 步骤: 通过减少归并段r来减少IO次数 置换-选择排序算法思想: minimax就是FO中的最后一个数据元素的大小 1.将工作区填满 2.从工作区选 ...
- 数据结构 | 【排序】外部排序
零.核心部分 1. 实现外部排序的两个过程: 将整个初始文件分为多个初始归并段; 将初始归并段进行归并,直至得到一个有序的完整文件: 2. 时间组成: 内部排序所需要的时间 外存信息读写所需要的时间 ...
最新文章
- Facebook数字货币凸显硅谷雄心:打造全球金融操作系统
- Goldengate 应用环境 mysql to oracle
- TCP协议的粘包问题(数据的无边界性)
- strongswan技术
- boost::dynamic_bitset模块实现ambiguous set的测试程序
- 磁共振线圈分类_收藏:磁共振检查序列及临床应用总结
- 如何取得好的软件设计
- 【Web后端笔记】SQL Server与java数据类型对应
- 2018年全国多校算法寒假训练营练习比赛(第一场)F. 大吉大利,今晚吃鸡——跑毒篇(模拟)
- JVisualVM 简介
- 如何在整个目录上运行dos2unix?
- 环境可靠性测试,气候环境类可靠性试验,可靠性测试标准
- iOS第三方支付集成-支付宝支付
- 银行卡查询银行卡类型查询及归属地查询
- 【第二周】吴恩达团队AI for Medical Diagnosis大作业
- saltstack实战--远程执行之返回(returner)
- CodeForces - 1485D Multiples and Power Differences (构造+lcm)
- Matrix Derivation
- Typora软件百度网盘下载地址
- 百度之星资格赛1003 度度熊与邪恶大魔王
热门文章
- 2018年全国《程序员高考》真题试卷
- 经典面试题(36):以下代码将输出的结果是什么?
- 浅谈javascript数值类型转换
- 正则表达式与html信息提取,基于正则表达式的HTML信息提取.pdf
- termux apache php,要啥自行车之Termux:将我们的(Android)安卓手机打造成全能的服务器...
- 厦门大学林子雨教授大数据技术原理及应用课程问题处理集锦
- 什么?你做的差异基因方法不合适?
- ps专业色彩调色扩展面板 Moody Photoshop Panel 1.1.2汉化版
- python语言的单行注释以井号开头_python-注释
- springboot jwt token前后端分离_7个开源的 Spring Boot 前后端分离项目,一定要收藏!...