数据结构第十一章外部排序.ppt
《数据结构第十一章外部排序.ppt》由会员分享,可在线阅读,更多相关《数据结构第十一章外部排序.ppt(35页珍藏版)》请在三一办公上搜索。
1、数据结构第十一章外部排序,本章内容11.1 外存信息的存取11.2 外部排序的方法11.3 多路平衡归并的实现11.4 置换-选择排序11.5 最佳归并树,11-3,11.1 外存信息的存取,常用的外存储器分类:顺序存取的设备(如磁带);随机存取的设备(如磁盘)。常用的外存储器是磁表面存储器,信息记录在一薄层磁性材料的表面上,这层材料附着于载体表面,随着载体作高速旋转或直线运动,在运动过程中用磁头进行读或写。外存信息的存取特点,决定了外部排序的策略选择。,11-4,11.1 外存信息的存取,磁带信息的存取磁带存储器的工作原理和磁带录音机一样,不同之处在于它存储的是数字信息而不是模拟信息。磁带上
2、的信息在横向分布、纵向分布以及首尾标志等都一定的格式。以1/2英寸九道的磁带为例,每一横排就可表示一个字符(8位+1个校验位)。纵向按区进行存储,区的长度不固定,但有一个范围,例如2到4096字节,相邻区之间有一定长度的间隔(IBG,Inter Block Gap),作为磁带起停之用。,11-5,11.1 外存信息的存取,在磁带上读写一块信息所需的时间由两部分组成:TI/O=ta+n twta为延迟时间,即读/写头到达传输信息所在物理快起始位置所需时间;tw为传输一个字符的时间。显然,延迟时间和信息在磁带上的位置、当前读/写头所在的位置有关。所以磁带便宜、可反复使用、是一种顺序存取设备,但查找
3、费时、速度慢(尤其是查找末端记录时)。,11-6,11.1 外存信息的存取,磁盘信息的存取磁盘是一种直接存取的存储设备(DASD)。页块的读写时间:TI/O=tseek+tlatency+n twmtseek:寻道时间tlatency:等待时间twm:传输时间,11-7,11.2 外部排序的方法,外部排序基本上由两个相对独立的阶段组成:首先,按可用内存大小,将外存上含n个记录的文件分成若干长度为l的子文件或段(segment),依次读入内存并利用有效的内部排序方法对它们进行排序,并将排序后得到的有序子文件重新写入外存,通常称这些有序子文件为归并段或顺串(run);然后,对这些归并段进行逐躺归并
4、,使归并段(有序的子文件)逐渐由小至大,直到得到整个有序文件为止。,11-8,11.2 外部排序的方法,例:一文件含10000记录,通过10次内部排序得到10个初始归并段R1R10,其中每一段都含有1000个记录。然后作两两归并:R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R1 R2 R3 R4 R5 R1 R2 R3 R1 R2 有序文件由10个初始归并段到一个有序文件,共进行了4趟归并,每一趟都从m个归并段得到ceil(m/2)个归并段。这种归并方法称为2-路平衡归并。,11-9,11.2 外部排序的方法,外存上信息的读/写是以“物理块”为单位进行的,假设每个物理块可以容
5、纳200个记录,则每一趟归并需进行50次“读”和50次“写”,4趟归并加上内部排序时所需进行的读/写使得在外排序中总共需进行500次读/写。,11-10,11.2 外部排序的方法,外部排序所需总的时间=内部排序(产生初始归并段)所需的时间(m tIS)+外存信息读写的时间(d tIO)+内部归并所需的时间(s utmg)其中:tIS 是为得到一个初始归并段进行内部排序所需时间的均值;tIO 是进行一次外存读/写时间的均值;utmg 是对u个记录进行内部归并所需时间;m 为经过内部排序之后得到的初始归并段的个数;s 为归并的趟数;d 为总的读/写次数。于是上例进行外排序所需总的时间为:10 tI
6、S+500 tIO+4x10000 tmg显然tIO较tmg要大的多,因此提高外排序的效率应主要着眼于减少外存信息读写的次数d。,11-11,11.2 外部排序的方法,d和“归并过程”的关系:若对上例进行5路平衡归并:R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R1 R2 有序文件仅需两趟归并,总的读/写次数便减少为:2x100+100=300,比2路归并减少了200次的读/写。对同一文件,进行外排序时所需读/写外存的次数和归并的趟数s成正比。一般情况下,对m个初始归并段进行k路平衡归并时,归并的趟数s=floor(logkm).可见:若能增加k或减少m便能减少s,因此减少d
7、.,11-12,11.3 多路平衡归并的实现,对于2路归并,令两个归并段上有u个记录,每得到归并后的一个记录,仅需一次比较即可,因此得到含u个记录的归并段需进行u-1次比较。对于k路归并,令u个记录分布在k个归并段上,显然,归并后的第一个记录应是k个归并段中关键字最小的记录,这需要进行k-1次比较,得到u个记录的归并段,共需(u-1)(k-1)次比较。由此,对n个记录的文件进行外排序时,在内部归并过程中进行的总的比较次数为s(k-1)(n-1)。假设所得初始归并段为m个,则归并过程中进行比较的总的时间为:floor(logkm)(k-1)(n-1)tmg=floor(log2m/log2k)(
8、k-1)(n-1)tmg由于(k-1)/log2k 随 k 的增长而增长,这将抵消由于增大k而减少外存信息读写时间所得效益。,11-13,11.3 多路平衡归并的实现,在进行k路归并时利用“败者树(Tree of Loser)”,则可使在k个记录中选出关键字最小的记录时仅需进行floor(log2k)次比较,从而使总的归并时间变为:floor(log2m)(n-1)tmg与k无关,不再随k的增长而增长。,11-14,11.3 多路平衡归并的实现,胜者树及其使用胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结果,使得更快地挑出亚军、第三名。,7,29,5,9,7,6,
9、5,4,挑出冠军需要进行 k-1 次比较,此处需要比较 3 次。,9,5,5,3,2,0,5,1,11-15,11.3 多路平衡归并的实现,胜者树及其使用胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结果,使得更快地挑出亚军、第三名。,7,29,16,9,7,6,5,4,挑出亚军需要进行 log2k 次比较,此处需要比较 2次。,9,7,7,3,2,0,7,1,11-16,11.3 多路平衡归并的实现,胜者树及其使用 胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结果,使得更快地挑出亚军、第三名。决出第一名需比较:k-1 次 决出第二名需
10、比较:log2k 次 决出第三名需比较:log2k 次 结果:采用胜者树后,从 k 个元素中挑选一个最小的元素仅需 log2k 次比较,这时总的比较次数下降为:logkm log2k(n-1)tmg log2m(n-1)tmg 该结果和 k 无关,这是通过多用空间换来的。改进:采用胜者树,k个元素中最小的元素输出之后,从根结点到它的相应的叶子结点路径上的结点都需要进行修改,为了加快程序运行的速度产生了败者树。,11-17,11.3 多路平衡归并的实现,败者树在父节点中记下刚进行完的比赛中的败者,但同样让胜者去参加下一轮的竞赛,便得到一棵“败者树”。,11-18,11.3 多路平衡归并的实现,下
11、图即为一棵实现5-路归并的败者树ls04,图中方形结点表示叶子结点(也可看成是外结点),分别为5个归并段中当前参加归并的待选择记录的关键码;败者树中根结点ls1的双亲结点ls0为“冠军”,在此指示各归并段中的最小关键码记录为第三段中的记录;结点ls3指示b1和b2两个叶子结点中的败者即是b2,而胜者b1和b3(b3是叶子结点b3、b4和b0经过两场比赛后选出的获胜者)进行比较,结点ls1则指示它们中的败者为b1。,11-19,11.3 多路平衡归并的实现,5-路归并的败者树例,9,20,ls0,ls1,ls3,ls2,ls4,b0,b1,b2,b4,b3,61525,123748,101515
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 第十一 外部 排序
链接地址:https://www.31ppt.com/p-5357807.html