版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十章外部排序本章内容外存信息的存取外部排序的基本方法—归并排序法多路平衡归并置换-选择排序外部排序的应用对象保存在外存储器上的信息量很大的数据记录文件。外排序与内排序的差别内部排序充分利用内存可以随机存取的特点,如希尔排序中,相隔di的记录关键字可作比较;堆排序中,完全二叉树中父R[i]与子R[2i],R[2i+1]可比快速排序中,需正向和逆向访问记录序列外存信息的定位和存取受其物理特性的限制外部排序的实现手段在排序过程中,进行多次内外存之间的数据交换外部排序的特点外排序基本方法:归并排序[步骤]生成若干初始归并串/顺串(文件预处理)把含有n个记录的文件,按内存缓冲区大小分成若干长度为L的子文件(段);分别调入内存用有效的内排序方法排序后送回外存;
多路合并对初始归并串逐趟合并,直至最后在外存上得到整个有序文件为止[例]某文件共10000个记录,设每个物理块可以容纳200个记录,内存缓冲区可以容纳5个物理块
1)经过10次内排序后得到10个初始归并段R1~R102)采用两路归并,需四趟可以得到排好序的文件
R1R2R3R4R5R6R7R8R9R102000200020002000200040004000外排序总时间:
8000
内排序:10tIS
10000
I/O操作:100tIO(排序)
+(100+80+80+100)tIO(归并)=460tIO
归并:(10000+8000+8000+10000)tmg=46000tmg提高外排序效率的途径
扩大初始归并段长度,从而减少初始归并段个数m进行多路(k路)归并减少合并趟数s,以减少I/O次数s=
logkm
多路归并多路平衡归并[通过简单比较进行K路归并存在的问题]
设记录总数为n,初始归并段的个数为m,从k个记录中选择一个关键字最小的记录时的比较次数为c则s趟内部归并总的比较次数为:
C=sc(n-1)=logkm
c(n-1)=log2m/log2k
c(n-1)
k
,s,可减少I/O次数;
k
,c=(k-1),归并效率[解决矛盾的方法]
——利用“败者树”选关键字最小的记录此时c=log2k则C=log2m(n-1),与k无关矛盾…12……k胜者树(树形选择排序)
68689896
890915890109206812109201581210920681290109201581290142224151617921422242516179226383025501897263830
501897
7路合并胜者树重构后的胜者树重构胜者树时,从根结点至新补入记录的叶结点的路径上的所有结点都必须更新。败者树
5220
4
013690136901092068121092015812
10920681290109201581290142224151611921422242516119226383025501897263830
501897
7路合并败者树重构后的败者树败者树的特点:记录败者,胜者参加下一轮比赛败者树的优点:重构时修改结点较少01234564ls[0]5ls[0]1234560
4520
13690
0109206812
123456调整败者树的方法:将新补充的结点与其双亲结点比较,败者留在该双亲结点,胜者继续向上直至树根的双亲以在b[4]补充15为例154与3比较4与2比较42与5比较25调整败者树的方法建败者树的过程7
-1初始化败者树调整b[6]6调整b[5]5调整b[4]4调整b[3]34调整b[2]2调整b[1]124调整b[0]054建败者树的过程[数据结构](依据:败者树为完全二叉树)主:b[0..k]b[0..k-1]——k个叶结点,存放k个输入归并段中当前参加归并的记录(缓冲区)
b[k]——虚拟记录,该关键字取可能的最小值minkey辅:ls[0..k-1]——不含叶结点的败者树存放最后胜出的编号(ls[0])以及所记录的败者编号[处理步骤]建败者树ls[0..k-1]重复下列操作直至k路归并完毕将b[ls[0]]写至输出归并段补充记录(某归并段变空时,补
),调整败者树多路平衡归并算法算法描述:建立败者树voidCreateLoserTree(){
b[k]=MINKEY;for(i=0;i<k;i++)
ls[i]=k;for(i=k-1;i>=0;i++)
Adjust(i);}voidAdjust(ints){for(t=(s+k)/2;t>0;t/=2){if(b[s]>b[ls[t]])s
ls[t];}ls[0]=s;}算法描述:K路合并voidK_Merge(){for(i=0;i<k;i++)
input(i);/*第i路输入一个元素到b[i]*/
CreateLoserTree(ls);while(b[ls[0]]!=MAXKEY){q=ls[0];
output(b[q]);
input(q);
Adjust(q);}}置换-选择排序置换-选择排序[目标]扩大初始归并段长度,突破内存工作区容量(设w个记录)的限制。[置换-选择排序原理]
内存
外存原始文件内存工作区FIWA初始归并段文件
(w个记录)FO
为简化问题,设每个物理块存放一个记录1)从FI输入w个记录到工作区WA;2)在FO中标记一个归并段开始;3)从WA中选出最小关键字记录,记为minimax记录;4)将minimax记录输出到FO中;5)从FI输入下一个记录到WA中;6)在WA中的关键字比minimax大的记录中选出关键字最小的记录
6.1)若不能选到,在FO中标记一个归并段结束;若由于WA为空而未选出,则结束处理;
否则,标记下一个归并段开始,转3)6.2)否则,将选出的记录作为新的minimax记录,转4)[示例]利用败者树(教材303页图11.6)
FOWA(4个记录)FI
空空36,21,33,87,23,7,62,16,54,43,29,…
空36,21,33,8723,7,62,16,54,43,29,…2136,23,33,877,62,16,54,43,29,…21,2336,7,33,8762,16,54,43,29,…21,23,3336,7,62,8716,54,43,29,…21,23,33,3616,7,62,8754,43,29,…21,23,33,36,6216,7,54,8743,29,…21,23,33,36,62,8716,7,54,4329,…21,23,33,36,62,87||716,29,54,43…
…处理步骤
1)初始化败者树:
1.1)所有外部结点:rnum=0;key=0;所有内部结点置0;
1.2)对外部结点从编号w-1至0
从外存FI读入记录,置段号为1,并调整败者树
2)置当前段号为1;
3)若ls[0]指示的外部结点属于当前段,输出该记录;否则,当前段号+1,输出段标后再输出该记录;
4)若FI未空,从FI补充记录,若补充key<此前输出记录的key,则rnum=当前段号+1
否则rnum=当前段号
否则补虚记录:key=
;rnum=当前段号+1;
5)调整败者树转3)直至所有记录被输出调整败者树原则:段号小者为胜者段号相同,关键字小的为胜者置换-选择排序的效果所得初始排序段的长度不等当输入文件记录的关键字大小随机分布时,初始归并段的平均长度为内存工作区大小w的两倍最佳归并树最佳归并树文件经过置换-选择排序之后,得到长度不等的初始归并段,进行k路归并时,初始归并段的不同搭配,会导致归并过程中I/O的次数不同。设有9个初始归并段,记录个数(长度)分别为:
9,30,12,18,3,17,2,6,24121121513832303259930121831726241191217182
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理护理专业发展课件下载
- 天津市河西区2025-2026学年高一(下)期中物理试卷(一)(含答案)
- 广东省广大附中2025-2026年高三下5月月考思想政治试卷(含解析)
- 良性阵发性位置性眩晕综合征
- 农产品质量分级 奈李(编制说明)
- (新教材同步备课)2024春高中生物 第3章 基因的本质 3.3 DNA的复制教学设计 新人教版必修2
- 小学诚信友善2025主题班会说课稿
- 2026年密友间的测试题及答案
- 2026年psychopath专业测试题及答案
- 2026年撞见怪老头测试题及答案
- (已压缩)广东省工程勘察设计服务成本取费导则(2024版)
- 压路机转让合同协议
- 给孩子立规矩课件
- 2025法律明白人测试题及答案
- 2025广东初级会计试题及答案
- 2024年房屋买卖合同示范文本
- 眼科医院护理部主任竞聘报告
- 苏科版七年级数学下册期末核心考点练习卷(含解析)
- 实测实量仪器操作使用专题培训
- 数字电子技术课件 3.4.2.1二进制译码器
- 2025年全国统一高考数学试卷(全国一卷)含答案
评论
0/150
提交评论