《外部排序》PPT课件.ppt_第1页
《外部排序》PPT课件.ppt_第2页
《外部排序》PPT课件.ppt_第3页
《外部排序》PPT课件.ppt_第4页
《外部排序》PPT课件.ppt_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、外存信息的存取2、外部排序的方法3、多路平衡归并的实现4、置换-选择排序5、最佳归并树,第11章 外部排序,1、外存信息的存取,1、外部排序: 内部排序:信息一次可全部调入内存,信息在内存中的处理时间是主要的时间耗费。 外部排序:信息量巨大,无法一次调入内存。只能驻留在带、盘、CD-ROM 上。特点 为内存运行时间短,内、外存进行交换需要时间长。减少 I/O 时间成为主 要矛盾。,记录(Record):数据项的集合存于内存,称之为结点。如果存之于外存,则叫做记 录。原因起源于是在历史上研究管理应用和计算机科学的两部分人员的习惯。 域(场):记录中的每个数据项,称之为域(Field) 。 文

2、件:记录的集合。 关键字:唯一标识记录的域,称之为关键字。 有序文件:文件根据关键字的大小。排成递增或递减的序列。,2、基本术语:,3、常用外存:,磁带:由磁带介质、读、写磁头、驱动器、接收盘和原始盘组成。 便宜、可反复使用、是一种顺序存取设备。 查找费时、速度幔。,1、外存信息的存取,3、常用外存:,磁带:由磁带介质、读、写磁头、驱动器、接收盘和原始盘组成。 便宜、可反复使用、是一种顺序存取设备。 查找费时、速度慢。 带信息的表示:,一种磁化方向、代表1,另一种磁化方向,代表0,01001001,10101111,1、外存信息的存取,3、常用外存:,磁带:由磁带介质、读、写磁头、驱动器、接收

3、盘和原始盘组成。 便宜、可反复使用、是一种顺序存取设备。 查找费时、速度慢(尤其是查找末端记录时)。,.,.,磁带机走向,读出头,写入头,原始盘,接收盘,带文件的组织:,记录 1,记录 3,记录 2,IRG(Inter Record Gap)记录间隙,1、外存信息的存取,3、常用外存:,带文件的组织:,记录 1,记录 3,记录 2,IRG(Inter Record Gap)记录间隙,v,t,可靠读写区,IRG:.5.75 inch,带来的问题是什么? 带的利用率下降,如: 密度 800 byte per inch 的带。设每个记录有 80 byte ,共 1000 个记录。如果, IRG .6

4、 inch ; 带的利用率? 1000 (80/800) 100 inch ( file) 1000 0.6 600 inch ( total IRG) 利用率 1/7= 14 % 必须改进带的利用率 !,带文件的读写时间:T i/o = ta + ntw ta 延迟时间:读写头到达相应的记录起始位置的时间。 tw 读/写一个字符的时间; n 字符数。,读写头,1、外存信息的存取,3、常用外存:,带文件的组织的改进:,块 1,块 3,块 2,IBG(Inter Block Gap)块间间隙,IBG:.5.75 inch,带来的好处是什么? 每一块是一个物理记录,包含若干个逻辑记录。 B.F(块

5、因子) 一个物理记录包含逻辑记录的个数 带的利用率上升,如上例: 设 B.F = 100 1000 /100 0.6 6 inch ( total IBG ) 1000 80/800 100 inch ( file) 利用率 100/106 = 94.3 %,1、外存信息的存取,3、常用外存:,磁盘:由存取装置、读、写磁头、活动臂、盘片(磁道、扇区)、旋转主轴构成。 速度快、容量大、直接存取设备。 种类:固定头磁盘、活动头磁盘 固定头磁盘:每个磁道都有一个磁头(速度快) 活动头磁盘:每个盘面共用一个磁头, 增加了找道的时间,应用广泛。,柱面:各盘面的直径相同的磁道的总和。,物理位置:盘组号、若

6、干个磁盘构成一组,系统可能有许 多组。 柱面号、 磁道号、 块(扇区号),盘文件的读写时间:T i/o = tseck + tla + ntwm tseck :找道时间 tla :等待时间 twm :传输时间/ 字符,n 字符数。,2、外部排序的方法,1、步骤:,生成合并段(run):读入文件的部分记录到内存 在内存中进行内部排序 将排好序的这些记录写入外存,形成合并段 再读入该文件 的下面的记录,往复进行,直至文件中的记录全部形成合并段 为止。,外部合并:将上一阶段生成的合并段调入内存,进行合并,直至最后形成一个有序的文 件。,平衡合并分类法:被合并的初始合并段均匀分布在 K 条磁带上,即分

7、布在 T1、T2、 Tk 上。对这 K 条带进行合并,将生成的中间归并段分布在 TK+1、 TK+2 、 T2K 上。然后,循环往复,直至最后形成一个 单一的合并段为止。 e.g: 平衡 2 路归并, K 2。 2K = 4, 需 4条磁带。六个初始合并段均匀分布在 T1、T2 上。每个合并段有 1000 个记录。T3、T4 初始为空。合并过程如下: 初始分布:,R(1 1000),R(20012000),R(4001. 5001),R(1001 2000),R(30014000),R(5001. 6000),T1,T2,T4:空,T3 :空,7、15、19 8、11、13 16、23、31

8、5、12,2、外部排序的方法,初始分布:,R(1 1000),R(20013000),R(4001. 5001),R(1001 2000),R(30014000),R(5001. 6000),T1,T2,T4:空,T3 :空,第一趟归并:,T1 :空,T2 :空,T3 :,T4:,R(1 2000),R(40016000),R(2001 4000),2、外部排序的方法,第二趟归并:,T3 :空,T4 :空,T1 :,T2:,R(1 4000),R(4001 6000),第三趟归并:,T3 :,T4 :空,T1 :空,T2:空,R(1 6000),2、外部排序的方法,e.g: 平衡 3 路归并,

9、 K 3。 2K = 6, 需 6条磁带。六个初始合并段均匀分布在 T1、T2 、T3上。每个合并段有 1000 个记录。T4、T5 、T6 初始为空。合并过程如下: 初始分布:,R(1 1000),R(30014000),R(1001 2000),R(40015000),T1:,T2:,T4:空,T3 :,R(2001 3000),R(50016000),T5:空,T6:空,第一趟归并:,R(1 3000),R(30016000),T4:,T5:,T1:空,T2:空,T3:空,T6:空,2、外部排序的方法,e.g: 平衡 3 路归并, K 3。 2K = 6, 需 6条磁带。六个初始合并段均

10、匀分布在 T1、T2 、T3上。每个合并段有 1000 个记录。T4、T5 、T6 初始为空。合并过程如下:,第一趟归并:,R(1 3000),R(30016000),T4:,T5:,T1:空,T2:空,T3:空,T6:空,第二趟归并:,R(1 6000),T1:,T2:空,T3:空,T4:空,T5:空,T6:空,2、外部排序的方法,时间分析: 归并趟数: logkm where k 是路数;m 是初始合并段数。 在上例中: log26 = 3 而 log36 = 2 此外,还有一次生成所有合并段的时间。对 文件中的所有的记录全部读写一次。 每一趟归并时,对文件中的所有的记录都要全部读写一次。

11、K 大,趟数减 少,读写记录的总数将减少。但 K 大,需要的内存将越多。 减少初始合并段数 m, 将使趟数减少,读写记录的总数将减少。这就要求在 内存一定且进行内部排序时, 生成尽可能长的归并段,从而减少归并段的 总数。,输入、输出缓冲区的安排: 设进行平衡 2 路归并, K 2。 2K = 4, 需 4条磁带。六个初 始合并段均匀分布在 T1、T2 。每个合并段有 1000 个记录。T3、T4 初始为空。,R(1 1000),R(20012000),R(4001. 5001),R(1001 2000),R(30014000),R(5001. 6000),T1,T2,T4:空,T3 :空,2、

12、外部排序的方法,输入、输出缓冲区的安排: 设进行平衡 2 路归并, K 2。 2K = 4, 需 4条磁带。六个初 始合并段均匀分布在 T1、T2 。每个合并段有 1000 个记录。T3、T4 初始为空。设每 个物理块包含 250 个记录,则每个初始合并段包含 4 个物理块。K 路合并,K 个输入 输入缓冲区和一个输出缓冲区。,R(1 1000),R(20012000),R(4001. 5001),R(1001 2000),R(30014000),R(5001. 6000),T1,T2,T4: 空,T3 :空,250 个记录,T1,T2,250 个记录,250 个记录,250 个记录,250

13、个记录,250 个记录,250 个记录,250 个记录,IBG(Inter Block Gap),初始合并段 ( R(1 1000)),250 个记录,T3,250 个记录大,250 个记录大,K(2)个输入缓冲区,250 个记录大,1个输出缓冲区,读入内存,读入内存,写入磁带,注意:对于缓冲区的安排,有一定的原则。,2、外部排序的方法,10 100,T1,T2,150 200,220 300,350 400,1 12,13 14,15 16,17 18,初始合并段 ( R(1 8)),T3,K(2)个输入缓冲区,1 10,1个输出缓冲区,读入内存,读入内存,写入磁带,缓冲区的安排举例:,10

14、 100,1 12,1 10,另一个初始合并段 ( R(1 8)),i,j,2、外部排序的方法,10 100,T1,T2,150 200,220 300,350 400,1 12,13 14,15 16,17 18,初始合并段 ( R(1 8)),T3,K(2)个输入缓冲区,12,1个输出缓冲区,缓冲区的安排举例:,10 100,1 12,1 10,另一个初始合并段 ( R(1 8)),i,j,2、外部排序的方法,10 100,T1,T2,150 200,220 300,350 400,1 12,13 14,15 16,17 18,初始合并段 ( R(1 8)),T3,K(2)个输入缓冲区,1

15、2,1个输出缓冲区,读入内存,读入内存,缓冲区的安排举例:,10 100,13 14,1 10,另一个初始合并段 ( R(1 8)),i,j,2、外部排序的方法,10 100,T1,T2,150 200,220 300,350 400,1 12,13 14,15 16,17 18,初始合并段 ( R(1 8)),T3,K(2)个输入缓冲区,1个输出缓冲区,读入内存,缓冲区的安排举例:,10 100,13 14,1 10,另一个初始合并段 ( R(1 8)),i,j,2、外部排序的方法,10 100,T1,T2,150 200,220 300,350 400,1 12,13 14,15 16,1

16、7 18,初始合并段 ( R(1 8)),T3,K(2)个输入缓冲区,1个输出缓冲区,读入内存,写入磁带,缓冲区的安排举例:,10 100,13 14,1 10,另一个初始合并段 ( R(1 8)),i,j,13 14,13 14,3、多路平衡归并的实现,时间分析: logkm 趟 K 大,趟数减少,读写记录的总数将减少。但 K 大,会带来什么问题呢?,1、带、盘的平衡多路归并的性质:,e.g: K = 2 时, m 个归并串。总共 n 个记录。,合并段 1,合并段 2,合并段 m-1,合并段 m,中间合并段,中间合并段,中间合并段,中间合并段,有序文件,层数: log2m +1 归并趟数:

17、log2m,3、多路平衡归并的实现,1、带、盘的平衡多路归并的性质:,e.g: K 2 时, 趟数将会减少。m 个归并串。总共 n 个记录。,合并段 1,合并段 k,合并段 m-1,合并段 m,中间合并段,中间合并段,有序文件,层数: logkm +1 归并趟数: logkm,设从 k 个元素中挑选一个最小的元素需 ( k-1) 次比较。 每次比较耗费的时间代价为: tmg,那么在进行 k 路平衡归并时,总的比较时间耗费不会超过: logkm ( k - 1 ) ( n - 1 ) tmg = log2m / log2k ( k - 1 ) ( n - 1 ) tmg k log2m / lo

18、g2k ( k - 1 ),大,大,3、多路平衡归并的实现,1、带、盘的平衡多路归并的性质:,设从 k 个元素中挑选一个最小的元素需 ( k-1) 次比较。 每次比较耗费的时间代价为: tmg,那么在进行 k 平衡归并时,总的时间耗费不会超过: logkm ( k - 1 ) ( n - 1 ) tmg = log2m / log2k ( k - 1 ) ( n - 1 ) tmg k log2m / log2k ( k - 1 ),大,大,改进:采用胜者树或者败者树,从 K 个元素中挑选一个最小的元素仅需 log2k 次比 较,这时总的时间耗费将下降: logkm log2k ( n - 1

19、 ) tmg log2m ( n - 1 ) tmg,2、胜者树及其使用 胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结 果,使得更快地挑出亚军、第三名 。,9,5,3、多路平衡归并的实现,2、胜者树及其使用 胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结 果,使得更快地挑出亚军、第三名 。,7,29,5,9,5,5 16 49 52 78,7 12 25 84 91,29 38 57 66 71,9 22 47 48 59,7,6,5,4,3,2,1,输 入 缓 冲 区,输 出 缓 冲 区,5,5,9,5,7,29,9,7,6,5,

20、4,3,2,1,5,注意:挑出冠军 需要进行 k-1 次 比较,此处需要 比较 3 次。,9,7,3、多路平衡归并的实现,2、胜者树及其使用 胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结 果,使得更快地挑出亚军、第三名 。,7,29,16,9,7,5 16 49 52 78,7 12 25 84 91,29 38 57 66 71,9 22 47 48 59,7,6,5,4,3,2,1,输 入 缓 冲 区,输 出 缓 冲 区,7,7,9,16,7,29,9,7,6,5,4,3,2,1,5 7,注意:挑出亚军 需要进行 log2k 次比较,此处需 要比较 2 次。

21、,9,12,3、多路平衡归并的实现,2、胜者树及其使用 胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结 果,使得更快地挑出亚军、第三名 。,12,29,16,9,9,5 16 49 52 78,7 12 25 84 91,29 38 57 66 71,9 22 47 48 59,7,6,5,4,3,2,1,输 入 缓 冲 区,输 出 缓 冲 区,9,12,9,16,12,29,9,7,6,5,4,3,2,1,5 7 9,注意:在输出缓 冲区被写满之后 ,全部内容输出 至带或盘。,3、多路平衡归并的实现,2、胜者树及其使用 胜者进入下一轮,直至决出本次比赛的冠军。决

22、出冠军之后,充分利用上一次比赛的 结果,使得更快地挑出亚军、第三名 。 决出第一名需比较: k - 1 次 决出第二名需比较: log2k 次 决出第三名需比较: log2k 次,结果:采用胜者树后,从 K 个元素中挑选一个最小的元素仅需 log2k 次比 较,这时总的时间耗费下降为: logkm log2k ( n - 1 ) tmg log2m ( n - 1 ) tmg 有意思的是该结果和 k 无关,这是通过多用空间换来的。,改进:采用胜者树,K 个元素中最小的元素输出之后,从根结点到它的相应的叶子结 点路径上的结点都需要进行修改,为了加快程序运行的速度产生了败者树。,29,7,3、多路

23、平衡归并的实现,3、败者树及其使用,7,29,5,9,9,5 16 49 52 78,7 12 25 84 91,29 38 57 66 71,9 22 47 48 59,7,6,5,4,3,2,1,输 入 缓 冲 区,输 出 缓 冲 区,9,7,29,5,7,29,9,7,6,5,4,3,2,1,5,注意:挑出冠军 需要进行 k-1 次 比较,此处需要 比较 3 次。,5,0,0,5,29,16,3、多路平衡归并的实现,7,29,16,9,9,5 16 49 52 78,7 12 25 84 91,29 38 57 66 71,9 22 47 48 59,7,6,5,4,3,2,1,输 入

24、缓 冲 区,输 出 缓 冲 区,5 7,注意:挑出亚军 需要进行 log2k 次比较,此处需 要比较 2 次。,3、败者树及其使用,1,7,0,9,16,29,16,7,29,9,7,6,5,4,3,2,1,0,5,29,16,3、多路平衡归并的实现,3、败者树及其使用,12,29,16,9,12,5 16 49 52 78,7 12 25 84 91,29 38 57 66 71,9 22 47 48 59,7,6,5,4,3,2,1,输 入 缓 冲 区,输 出 缓 冲 区,5 7 9,注意:在输出缓 冲区被写满之后 ,全部内容输出 至带或盘。,1,1,9,0,16,16,29,16,12,

25、29,9,7,6,5,4,3,2,1,0,9,3、多路平衡归并的实现,3、败者树的程序实现 typedef int LoserTree k ; typedef struct KeyType key; Exnode, External k+1 ;,Void K_Merge ( LoserTree / 将含最大关键字MAXKEY的记录写至输出归并段 / K_Merge,3、多路平衡归并的实现,3、败者树的程序实现,Void Adjust ( LoserTree / Adjust,Void CreateLoserTree ( LoserTree / CreateLoserTree,k,k,3、多路平

26、衡归并的实现,败者树程序实现:,7,29,5,9,k,5 16 49 52 78,7 12 25 84 91,29 38 57 66 71,9 22 47 48 59,3,2,1,0,2,1,输 入 缓 冲 区,输 出 缓 冲 区,注意:在输出缓 冲区被写满之后 ,全部内容输出 至带或盘。,1,1,k,0,存于 b0 bk-1之中 注意: bk = - ,存于 ls0 lsk-1 之中,3,3,k,3、多路平衡归并的实现,败者树程序实现:,7,29,5,9,k,5 16 49 52 78,7 12 25 84 91,29 38 57 66 71,9 22 47 48 59,3,2,1,0,2,

27、1,输 入 缓 冲 区,输 出 缓 冲 区,注意:在输出缓 冲区被写满之后 ,全部内容输出 至带或盘。,1,1,k,0,存于 b0 bk-1之中 注意: bk = - ,存于 ls0 lsk-1 之中,3,2,k,3、多路平衡归并的实现,败者树程序实现:,7,29,5,9,3,5 16 49 52 78,7 12 25 84 91,29 38 57 66 71,9 22 47 48 59,3,2,1,0,2,1,输 入 缓 冲 区,输 出 缓 冲 区,注意:在输出缓 冲区被写满之后 ,全部内容输出 至带或盘。,1,1,k,0,存于 b0 bk-1之中 注意: bk = - ,存于 ls0 ls

28、k-1 之中,3,2,1,3、多路平衡归并的实现,败者树程序实现:,7,29,5,9,3,5 16 49 52 78,7 12 25 84 91,29 38 57 66 71,9 22 47 48 59,3,2,1,0,2,1,输 入 缓 冲 区,输 出 缓 冲 区,注意:在输出缓 冲区被写满之后 ,全部内容输出 至带或盘。,1,1,k,0,存于 b0 bk-1之中 注意: bk = - ,存于 ls0 lsk-1 之中,3,2,1,3、多路平衡归并的实现,败者树程序实现:,7,29,5,9,3,5 16 49 52 78,7 12 25 84 91,29 38 57 66 71,9 22 4

29、7 48 59,3,2,1,0,2,1,输 入 缓 冲 区,输 出 缓 冲 区,注意:在输出缓 冲区被写满之后 ,全部内容输出 至带或盘。,1,1,0,0,存于 b0 bk-1之中 注意: bk = - ,存于 ls0 lsk-1 之中,3,5,2,1,3、多路平衡归并的实现,败者树程序实现:,7,29,5,9,3,5 16 49 52 78,7 12 25 84 91,29 38 57 66 71,9 22 47 48 59,3,2,1,0,2,1,输 入 缓 冲 区,输 出 缓 冲 区,注意:在输出缓 冲区被写满之后 ,全部内容输出 至带或盘。,1,1,0,0,存于 b0 bk-1之中 注

30、意:bk = - ,存于 ls0 lsk-1 之中,3,5,2,1,3、多路平衡归并的实现,败者树程序实现:记录输出结束后,可能出现如下情况。此时 bls0 = +,程序结束。,3,3,2,1,0,2,1,输 入 缓 冲 区,输 出 缓 冲 区,注意:每一个归并段的最后加一个字段为 + ,即书上所说的 MAXKEY,作为结束条件。,1,1,0,0,存于 b0 bk-1之中 注意:bk = - ,存于 ls0 lsk-1 之中,3,+,+,+,+,+,+,+,+,4、置换-选择排序,1、作用:产生尽可能长的初始归并段。在内存长度一定时,按照通常的排序方法,产生的 初始归并段的长度只能和内存长度相

31、同,但采用本方法之后可以产生却可以生成 两倍内存长度的初始归并段(平均情况下)。,2、实例:F1:31、21、19、12、26、41、11、37、15、23、29 在带 1 上 F2: 输出磁带 2 假定使用的内存只有 3 个记录长,利用置换-选择分类法产生初始合并段。,4、置换-选择排序,实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带 1 上,步数内存缓冲区内容(由 F1 输入)输出结果(至带 F2 ) 131、 21、 1919,4、置换-选择排序,实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带

32、 1 上,步数内存缓冲区内容(由 F1 输入)输出结果(至带 F2 ) 131、 21、 1919 231、 21、 (12)21,4、置换-选择排序,实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带 1 上,步数内存缓冲区内容(由 F1 输入)输出结果(至带 F2 ) 131、 21、 1919 231、 21、 (12)21 331、 26、 (12)26,4、置换-选择排序,实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带 1 上,步数内存缓冲区内容(由 F1 输入)输出结果(至带 F2 ) 13

33、1、 21、 1919 231、 21、 (12)21 331、 26、 (12)26 431、 41、 (12)31,4、置换-选择排序,实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带 1 上,步数内存缓冲区内容(由 F1 输入)输出结果(至带 F2 ) 131、 21、 1919 231、 21、 (12)21 331、 26、 (12)26 431、 41、 (12)31 5(11)、41、 (12)41,4、置换-选择排序,实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带 1 上,步数内存缓冲

34、区内容(由 F1 输入)输出结果(至带 F2 ) 131、 21、 1919 231、 21、 (12)21 331、 26、 (12)26 431、 41、 (12)31 5(11)、41、 (12)41 6(11)、(37)、(12) #,第一个初始合并段,4、置换-选择排序,实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带 1 上,步数内存缓冲区内容(由 F1 输入)输出结果(至带 F2 ) 131、 21、 1919 231、 21、 (12)21 331、 26、 (12)26 431、 41、 (12)31 5(11)、41、 (12)

35、41 6(11)、(37)、(12) # 711、37、1211,4、置换-选择排序,实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带 1 上,步数内存缓冲区内容(由 F1 输入)输出结果(至带 F2 ) 131、 21、 1919 231、 21、 (12)21 331、 26、 (12)26 431、 41、 (12)31 5(11)、41、 (12)41 6(11)、(37)、(12) # 711、37、1211 815、37、1212,4、置换-选择排序,实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、2

36、9 在带 1 上,步数内存缓冲区内容(由 F1 输入)输出结果(至带 F2 ) 131、 21、 1919 231、 21、 (12)21 331、 26、 (12)26 431、 41、 (12)31 5(11)、41、 (12)41 6(11)、(37)、(12) # 711、37、1211 815、37、1212 915、37、2315,4、置换-选择排序,实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带 1 上,步数内存缓冲区内容(由 F1 输入)输出结果(至带 F2 ) 131、 21、 1919 231、 21、 (12)21 331、

37、 26、 (12)26 431、 41、 (12)31 5(11)、41、 (12)41 6(11)、(37)、(12) # 711、37、1211 815、37、1212 915、37、2315 1029、37、23 23,4、置换-选择排序,实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带 1 上,步数内存缓冲区内容(由 F1 输入)输出结果(至带 F2 ) 131、 21、 1919 231、 21、 (12)21 331、 26、 (12)26 431、 41、 (12)31 5(11)、41、 (12)41 6(11)、(37)、(12)

38、 # 711、37、1211 815、37、1212 915、37、2315 1029、37、23 23 11 29、3729,4、置换-选择排序,实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带 1 上,步数内存缓冲区内容(由 F1 输入)输出结果(至带 F2 ) 131、 21、 1919 231、 21、 (12)21 331、 26、 (12)26 431、 41、 (12)31 5(11)、41、 (12)41 6(11)、(37)、(12) # 711、37、1211 815、37、1212 915、37、2315 1029、37、23

39、 23 11 29、3729 12 3737,4、置换-选择排序,实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带 1 上,步数内存缓冲区内容(由 F1 输入)输出结果(至带 F2 ) 131、 21、 1919 231、 21、 (12)21 331、 26、 (12)26 431、 41、 (12)31 5(11)、41、 (12)41 6(11)、(37)、(12) # 711、37、1211 815、37、1212 915、37、2315 1029、37、23 23 11 29、3729 12 3737 13#,第二个初始合并段,第一个初始

40、合并段,4、置换-选择排序,3、长度分析: 设内存可以存放 m 个记录,则首先从文件读入 m 记录到内存。这 m 个记录 肯定可以归入本初始合并段内。这样,必须从文件中读入 m 个记录。这 m 个 记录中平均有一半可以归入本合并段,一半归入下一合并段。 因此,合并段的平均长度为: m + m/2 + m/4 + = 2m 所以,在平均情况下,合并段的平均长度为 2m 。 书上介绍:该结论由:EFMoore 在 1961 年从置换选择排序同扫雪机的类比中得 到的。不过我认为这种证明完全是胡扯。,4、程序实现: 可以用败者树的办法 加以实现。,3,2,1,4,4、置换-选择排序,5、败者树实现置换-选择排序,5,2,29,0,1,0,51、49、39、46、38、29、14、61、15,46 1,39 1,49 1,51 1,29 1,38 1,5,4,3,3,2,0,4,4、置换-选择排序,5、败者树实现置换-选择排序,5,2,29 38,0,1,1,51、49、39、46、38、29、14、61、15,46 1,39 1,49 1,51 1,14 2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论