数据结构-外部排序-(多路归并排序、败者树、置换选择排序、最佳归并树)

目录

一、外部归并排序

 二、败者树

 三、置换选择排序

四、最佳归并树


一、外部归并排序

 16个块,先每个块读入内存进行排序在输出回来,进行16次读和16次写

 两两归并,第一趟如下

 在两两归并

 时间分析

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

对r个初始归并段,做k路归并,则归并树可用k叉树表示,若树高为h,则归并趟树

 推到:k叉树第h层多有个结点,则满足       

初始归并段数量=文件总共记录/内存可容纳记录  r=n/l

加快速度方法

k增加(缓冲区个数增加):多路平衡归并,问题会每次比较大小次数太多

r减小(缓冲区大小增加) :构建更长初始归并段

 二、败者树

k增加,减少每次比对次数

 

 有了败着树,选出最小元素,只对比灰色每层就行,比对次   =h-1   

 三、置换选择排序

r减少,构造更长初始归并段

 按增序,开始读取3个记录,最小的(4)置换出去,并MINXMAX=4,,读取下一个,在获取最小的值是否小于MINXMAX,小于放入归并段1后面,

 如果大于定死这个(下次都不看),就获取下一个最小的值并大于MINXMAX的(14)置换出去后面,并更新MINXMAX14,然后继续置换,

直到3个位置的比 MINXMAX小,就重新一个归并段,在继续前面的置换流程一直结束 

四、最佳归并树

哈夫曼树构建

n路归并注意最后不满n路

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值