目录
一、外部归并排序
二、败者树
三、置换选择排序
四、最佳归并树
一、外部归并排序

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路













![[遗传学]转座因子的结构与功能](https://img-blog.csdnimg.cn/img_convert/4dd9369945d9f61b5a58abc22f4e6a63.png)







