8.7外部排序

一、外存、内存之间的交换

在这里插入图片描述
读磁盘,在内存中申请一片空间,其大小可以和磁盘块的大小保持一致,1KB.
在这里插入图片描述
通过程序代码,修改内存中的内容
在这里插入图片描述
写磁盘,也是以块为单位,可以将写回,也可以写回别的磁盘块。

二、外部排序原理

在这里插入图片描述
申请的三个缓冲区的大小与磁盘块大小保持一致

在这里插入图片描述
先将前两个磁盘块写入缓冲区1、2,并对其进行内部排序。
在这里插入图片描述
将要写回磁盘的缓冲区1的内容写到输出缓冲区,然后写入磁盘在这里插入图片描述

在这里插入图片描述
每个磁盘块都要进行一次读写操作,总共进行16*2次读写。
在这里插入图片描述
分别挑选两个归并段中两个较小的,读入内存

在这里插入图片描述
每次从两个缓冲区中挑选最小的元素,放到输出缓冲区中,当输出缓冲区存储1KB之后,将其写回外存

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第二趟归并

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
时间开销分析
在这里插入图片描述
时间开销主要在读写磁盘,如果可以减少归并次数,即减少了读写次数,这样可以提高效率
在这里插入图片描述

在这里插入图片描述
通过下面的败者树可以减少对比关键字次数
在这里插入图片描述
一次将四个磁盘块内容加入输入缓冲区进行内部排序,可以得到4个初始归并段,然后进行4路归并
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、败者树

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
派大星取代天净饭,并不需要重新进行比赛,只需要派大星与阿乐,程龙,孙悟空比较
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果新新加入的元素放在b1或b2,则只需要对比2次(看树的层次),若放在b3或b4,则只需要对比3次
在这里插入图片描述

四、置换-选择排序在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以先将14输出
在这里插入图片描述
接下来构造归并段2
在这里插入图片描述
在这里插入图片描述
上面演示,是一个一个元素进行移入
实际上,选出的元素会先加入输出缓冲区,等输出缓冲区满了之后,会将其一次性写入磁盘
对于初始待排序序列,也是先将其加入输入缓冲区,每一次会读入好几个,然后一个一个的将其加入内存工作区。
在这里插入图片描述

四、最佳归并树

在这里插入图片描述
在这里插入图片描述
先找权值最小的,先归并
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加几个长度为0的虚段
在这里插入图片描述

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值