




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、外存信息的存取、外存信息的存取1、外部排序:、外部排序:内部排序:信息一次可全部调入内存,信息在内存中的处理时间是主要的时间耗费。内部排序:信息一次可全部调入内存,信息在内存中的处理时间是主要的时间耗费。外部排序:信息量巨大,无法一次调入内存。只能驻留在带、盘、外部排序:信息量巨大,无法一次调入内存。只能驻留在带、盘、CD-ROM 上。特点上。特点 为内存运行时间短,内、外存进行交换需要时间长。减少为内存运行时间短,内、外存进行交换需要时间长。减少 I/O 时间成为主时间成为主 要矛盾。要矛盾。 记录记录Record):数据项的集合存于内存,称之为结点。如果存之于外存,则叫做记):数据项的
2、集合存于内存,称之为结点。如果存之于外存,则叫做记 录。原因起源于是在历史上研究管理应用和计算机科学的两部分人录。原因起源于是在历史上研究管理应用和计算机科学的两部分人员的习惯。员的习惯。 域场):记录中的每个数据项,称之为域域场):记录中的每个数据项,称之为域Field) 。 文件:记录的集合。文件:记录的集合。 关键字:唯一标识记录的域,称之为关键字。关键字:唯一标识记录的域,称之为关键字。 有序文件:文件根据关键字的大小。排成递增或递减的序列。有序文件:文件根据关键字的大小。排成递增或递减的序列。2、基本术语:、基本术语:3、常用外存:、常用外存: 磁带:由磁带介质、读、写磁头、驱动器、
3、接收盘和原始盘组成。磁带:由磁带介质、读、写磁头、驱动器、接收盘和原始盘组成。 廉价、可反复使用、是一种顺序存取设备。廉价、可反复使用、是一种顺序存取设备。 查找费时、速度幔。查找费时、速度幔。1、外存信息的存取、外存信息的存取3、常用外存:、常用外存: 磁带:由磁带介质、读、写磁头、驱动器、接收盘和原始盘组成。磁带:由磁带介质、读、写磁头、驱动器、接收盘和原始盘组成。 廉价、可反复使用、是一种顺序存取设备。廉价、可反复使用、是一种顺序存取设备。 查找费时、速度慢。查找费时、速度慢。 带信息的表示:带信息的表示:一种磁化方向、代表一种磁化方向、代表1另一种磁化方向,代表另一种磁化方向,代表00
4、1001001101011111、外存信息的存取、外存信息的存取3、常用外存:、常用外存: 磁带:由磁带介质、读、写磁头、驱动器、接收盘和原始盘组成。磁带:由磁带介质、读、写磁头、驱动器、接收盘和原始盘组成。 廉价、可反复使用、是一种顺序存取设备。廉价、可反复使用、是一种顺序存取设备。 查找费时、速度慢尤其是查找末端记录时)。查找费时、速度慢尤其是查找末端记录时)。.磁带机走向磁带机走向读读出出头头写写入入头头原原始始盘盘接接收收盘盘 带文件的组织:带文件的组织:记录记录 1记录记录 3记录记录 2IRGInter Record Gap记录间隙记录间隙1、外存信息的存取、外存信息的存取3、常用
5、外存:、常用外存: 带文件的组织:带文件的组织:记录记录 1记录记录 3记录记录 2IRGInter Record Gap记录间隙记录间隙vt可靠读写区可靠读写区 IRG:.5.75 inch,带来的问题是什么?,带来的问题是什么? 带的利用率下降,如:带的利用率下降,如: 密度密度 800 byte per inch 的带。设每个记录有的带。设每个记录有 80 byte ,共,共 1000 个记录。假如,个记录。假如, IRG .6 inch ; 带的利用率?带的利用率? 1000 (80/800) 100 inch ( file) 1000 0.6 600 inch ( total IRG
6、) 利用率利用率 1/7= 14 % 必须改进带的利用率必须改进带的利用率 ! 带文件的读写时间:带文件的读写时间:T i/o = ta + ntw ta 延迟时间:读写头到达相应的记录起始位置的时间。延迟时间:读写头到达相应的记录起始位置的时间。 tw 读读/写一个字符的时间;写一个字符的时间; n 字符数。字符数。读写头读写头1、外存信息的存取、外存信息的存取3、常用外存:、常用外存: 带文件的组织的改进:带文件的组织的改进:块块 1块块 3块块 2IBGInter Block Gap块间间隙块间间隙 IBG:.5.75 inch,带来的好处是什么?,带来的好处是什么? 每一块是一个物理记
7、录,包含若干个逻辑记录。每一块是一个物理记录,包含若干个逻辑记录。 B.F块因子)块因子) 一个物理记录包含逻辑记录的个数一个物理记录包含逻辑记录的个数 带的利用率上升,如上例:带的利用率上升,如上例: 设设 B.F = 100 1000 /100 0.6 6 inch ( total IBG ) 1000 80/800 100 inch ( file) 利用率利用率 100/106 = 94.3 %1、外存信息的存取、外存信息的存取3、常用外存:、常用外存: 磁盘:由存取装置、读、写磁头、活动臂、盘片磁道、扇区)、旋转主轴构成。磁盘:由存取装置、读、写磁头、活动臂、盘片磁道、扇区)、旋转主轴
8、构成。 速度快、容量大、直接存取设备。速度快、容量大、直接存取设备。 品种:固定头磁盘、活动头磁盘品种:固定头磁盘、活动头磁盘 固定头磁盘:每个磁道都有一个磁头速度快)固定头磁盘:每个磁道都有一个磁头速度快) 活动头磁盘:每个盘面共用一个磁头,活动头磁盘:每个盘面共用一个磁头, 增加了找道的时间,应用广泛。增加了找道的时间,应用广泛。 柱面:各盘面的直径相同的磁道的总和。柱面:各盘面的直径相同的磁道的总和。 物理位置:盘组号、若干个磁盘构成一组,系统可能有许物理位置:盘组号、若干个磁盘构成一组,系统可能有许 多组。多组。 柱面号、柱面号、 磁道号、磁道号、 块扇区号)块扇区号) 盘文件的读写时
9、间:盘文件的读写时间:T i/o = tseck + tla + ntwm tseck :找道时间:找道时间tla :等待时间:等待时间twm :传输时间:传输时间/ 字符,字符,n 字字符数。符数。2、外部排序的方法、外部排序的方法1、步骤:、步骤: 生成合并段生成合并段run):读入文件的部分记录到内存):读入文件的部分记录到内存 在内存中进行内部排序在内存中进行内部排序 将排好序的这些记录写入外存,形成合并段将排好序的这些记录写入外存,形成合并段 再读再读入该文件入该文件 的下面的记录,往复进行,直至文件中的记录全部形的下面的记录,往复进行,直至文件中的记录全部形成合并段成合并段 为止。
10、为止。 外部合并:将上一阶段生成的合并段调入内存,进行合并,直至最后形成一个有序的文外部合并:将上一阶段生成的合并段调入内存,进行合并,直至最后形成一个有序的文 件。件。 平衡合并分类法:被合并的初始合并段均匀分布在平衡合并分类法:被合并的初始合并段均匀分布在 K 条磁带上,即分布在条磁带上,即分布在 T1、T2、 Tk 上。对这上。对这 K 条带进行合并,将生成的中间归并段分布在条带进行合并,将生成的中间归并段分布在 TK+1、 TK+2 、 T2K 上。然后,循环往复,直至最后形成一个上。然后,循环往复,直至最后形成一个 单一的合并段为止。单一的合并段为止。e.g: 平衡平衡 2 路归并,
11、路归并, K 2。 2K = 4, 需需 4条磁带。六个初始合并段均匀分布在条磁带。六个初始合并段均匀分布在 T1、T2 上。每个合并段有上。每个合并段有 1000 个记录。个记录。T3、T4 初始为空。合并过程如下:初始为空。合并过程如下:初始分布:初始分布:R1 1000)R20192000)R4001. 5001)R1001 2000) R30014000)R5001. 6000)T1T2T4:空:空T3 :空:空7、15、19 8、11、13 16、23、31 5、122、外部排序的方法、外部排序的方法 初始分布:初始分布:R1 1000)R20193000)R4001. 5001)R
12、1001 2000) R30014000)R5001. 6000)T1T2T4:空:空T3 :空:空 第一趟归并:第一趟归并:T1 :空:空T2 :空:空T3 :T4:R1 2000)R40016000)R2019 4000)2、外部排序的方法、外部排序的方法 第二趟归并:第二趟归并:T3 :空:空T4 :空:空T1 :T2:R1 4000)R4001 6000) 第三趟归并:第三趟归并:T3 :T4 :空:空T1 :空:空T2:空:空R1 6000)2、外部排序的方法、外部排序的方法e.g: 平衡平衡 3 路归并,路归并, K 3。 2K = 6, 需需 6条磁带。六个初始合并段均匀分布在条
13、磁带。六个初始合并段均匀分布在 T1、T2 、T3上。每个合并段有上。每个合并段有 1000 个记录。个记录。T4、T5 、T6 初始为空。合并过程如下:初始为空。合并过程如下:初始分布:初始分布:R1 1000)R30014000)R1001 2000) R40015000)T1:T2:T4:空:空T3 :R2019 3000) R50016000)T5:空:空T6:空:空 第一趟归并:第一趟归并:R1 3000)R30016000)T4:T5:T1:空:空T2:空:空T3:空:空T6:空:空2、外部排序的方法、外部排序的方法e.g: 平衡平衡 3 路归并,路归并, K 3。 2K = 6,
14、 需需 6条磁带。六个初始合并段均匀分布在条磁带。六个初始合并段均匀分布在 T1、T2 、T3上。每个合并段有上。每个合并段有 1000 个记录。个记录。T4、T5 、T6 初始为空。合并过程如下:初始为空。合并过程如下: 第一趟归并:第一趟归并:R1 3000)R30016000)T4:T5:T1:空:空T2:空:空T3:空:空T6:空:空 第二趟归并:第二趟归并:R1 6000)T1:T2:空:空T3:空:空T4:空:空T5:空:空T6:空:空2、外部排序的方法、外部排序的方法 时间分析时间分析: 归并趟数归并趟数: logkm where k 是路数;是路数;m 是初始合并段数。是初始合
15、并段数。 在上例中:在上例中: log26 = 3 而而 log36 = 2 此外,还有一次生成所有合并段的时间。对此外,还有一次生成所有合并段的时间。对 文件中的所有的记录全部读写一次。文件中的所有的记录全部读写一次。 每一趟归并时,对文件中的所有的记录都要全部读写一次。每一趟归并时,对文件中的所有的记录都要全部读写一次。K 大,趟数减大,趟数减 少,读写记录的总数将减少。但少,读写记录的总数将减少。但 K 大,需要的内存将越多。大,需要的内存将越多。 减少初始合并段数减少初始合并段数 m, 将使趟数减少,读写记录的总数将减少。这将使趟数减少,读写记录的总数将减少。这就要求在就要求在 内存一
16、定且进行内部排序时,内存一定且进行内部排序时, 生成尽可能长的归并段,从而减少生成尽可能长的归并段,从而减少归并段的归并段的 总数。总数。 输入、输出缓冲区的安排输入、输出缓冲区的安排: 设进行平衡设进行平衡 2 路归并,路归并, K 2。 2K = 4, 需需 4条磁带。六个初条磁带。六个初 始合并段均匀分布在始合并段均匀分布在 T1、T2 。每个合并段有。每个合并段有 1000 个记录。个记录。T3、T4 初始为空。初始为空。R1 1000)R20192000)R4001. 5001)R1001 2000) R30014000)R5001. 6000)T1T2T4:空:空T3 :空:空2、
17、外部排序的方法、外部排序的方法 输入、输出缓冲区的安排输入、输出缓冲区的安排: 设进行平衡设进行平衡 2 路归并,路归并, K 2。 2K = 4, 需需 4条磁带。六个初条磁带。六个初 始合并段均匀分布在始合并段均匀分布在 T1、T2 。每个合并段有。每个合并段有 1000 个记录。个记录。T3、T4 初始为空。设每初始为空。设每 个物理块包含个物理块包含 250 个记录,则每个初始合并段包含个记录,则每个初始合并段包含 4 个物理块。个物理块。K 路合并,路合并,K 个输入个输入 输入缓冲区和一个输出缓冲区。输入缓冲区和一个输出缓冲区。R1 1000)R20192000)R4001. 50
18、01)R1001 2000) R30014000)R5001. 6000)T1T2T4: 空空T3 :空:空 250 个记录个记录T1T2 250 个记录个记录 250 个记录个记录 250 个记录个记录 250 个记录个记录 250 个记录个记录 250 个记录个记录 250 个记录个记录IBGInter Block Gap)初始合并段初始合并段 ( R1 1000)) 250 个记录个记录T3 250 个记录大个记录大 250 个记录大个记录大 K(2)个输入缓冲区个输入缓冲区 250 个记录大个记录大 1个输出缓冲区个输出缓冲区读入内存读入内存读入内存读入内存写入磁带写入磁带注意:对于缓
19、冲区的安排,有一定的原则。注意:对于缓冲区的安排,有一定的原则。2、外部排序的方法、外部排序的方法 10 100 T1T2 150 200 220 300 350 400 1 12 13 14 15 16 17 18初始合并段初始合并段 ( R1 8))T3 K(2)个输入缓冲区个输入缓冲区 1 10 1个输出缓冲区个输出缓冲区读入内存读入内存读入内存读入内存写入磁带写入磁带缓冲区的安缓冲区的安排举例:排举例: 10 100 1 121 10 另一个初始合并段另一个初始合并段 ( R1 8))ij2、外部排序的方法、外部排序的方法 10 100 T1T2 150 200 220 300 350
20、 400 1 12 13 14 15 16 17 18初始合并段初始合并段 ( R1 8))T3 K(2)个输入缓冲区个输入缓冲区 12 1个输出缓冲区个输出缓冲区缓冲区的安缓冲区的安排举例:排举例: 10 100 1 121 10 另一个初始合并段另一个初始合并段 ( R1 8))ij2、外部排序的方法、外部排序的方法 10 100 T1T2 150 200 220 300 350 400 1 12 13 14 15 16 17 18初始合并段初始合并段 ( R1 8))T3 K(2)个输入缓冲区个输入缓冲区 12 1个输出缓冲区个输出缓冲区读入内存读入内存读入内存读入内存缓冲区的安缓冲区的
21、安排举例:排举例: 10 100 13 141 10 另一个初始合并段另一个初始合并段 ( R1 8))ij2、外部排序的方法、外部排序的方法 10 100 T1T2 150 200 220 300 350 400 1 12 13 14 15 16 17 18初始合并段初始合并段 ( R1 8))T3 K(2)个输入缓冲区个输入缓冲区 1个输出缓冲区个输出缓冲区读入内存读入内存缓冲区的安缓冲区的安排举例:排举例: 10 100 13 141 10 另一个初始合并段另一个初始合并段 ( R1 8))ij2、外部排序的方法、外部排序的方法 10 100 T1T2 150 200 220 300 3
22、50 400 1 12 13 14 15 16 17 18初始合并段初始合并段 ( R1 8))T3 K(2)个输入缓冲区个输入缓冲区 1个输出缓冲区个输出缓冲区读入内存读入内存写入磁带写入磁带缓冲区的安缓冲区的安排举例:排举例: 10 100 13 141 10 另一个初始合并段另一个初始合并段 ( R1 8))ij 13 1413 14 3、多路平衡归并的实现、多路平衡归并的实现 时间分析时间分析: logkm 趟趟 K 大,趟数减少,读写记录的总数将减少。但大,趟数减少,读写记录的总数将减少。但 K 大,会带来什么问题呢?大,会带来什么问题呢?1、带、盘的平衡多路归并的性质:、带、盘的平
23、衡多路归并的性质: e.g: K = 2 时时, m 个归并串。总共个归并串。总共 n 个记录。个记录。合并段合并段 1合并段合并段 2合并段合并段 m-1合并段合并段 m中间合并段中间合并段 中间合并段中间合并段 中间合并段中间合并段中间合并段中间合并段有序文件有序文件层数:层数: log2m +1归并趟数:归并趟数: log2m3、多路平衡归并的实现、多路平衡归并的实现1、带、盘的平衡多路归并的性质:、带、盘的平衡多路归并的性质: e.g: K 2 时时, 趟数将会减少。趟数将会减少。m 个归并串。总共个归并串。总共 n 个记录。个记录。合并段合并段 1合并段合并段 k合并段合并段 m-1
24、合并段合并段 m中间合并段中间合并段 中间合并段中间合并段有序文件有序文件层数:层数: logkm +1归并趟数:归并趟数: logkm 设从设从 k 个元素中挑选一个最小的元素需个元素中挑选一个最小的元素需 ( k-1) 次比较。次比较。 每次比较耗费的时间代价为每次比较耗费的时间代价为: tmg,那么在进行,那么在进行 k 路平衡归并时,总的比较时间耗费不会超过:路平衡归并时,总的比较时间耗费不会超过: logkm ( k - 1 ) ( n - 1 ) tmg = log2m / log2k ( k - 1 ) ( n - 1 ) tmgk log2m / log2k ( k - 1 )
25、大大大大3、多路平衡归并的实现、多路平衡归并的实现1、带、盘的平衡多路归并的性质:、带、盘的平衡多路归并的性质: 设从设从 k 个元素中挑选一个最小的元素需个元素中挑选一个最小的元素需 ( k-1) 次比较。次比较。 每次比较耗费的时间代价为每次比较耗费的时间代价为: tmg,那么在进行,那么在进行 k 平衡归并时,总的时间耗费不会超过:平衡归并时,总的时间耗费不会超过: logkm ( k - 1 ) ( n - 1 ) tmg = log2m / log2k ( k - 1 ) ( n - 1 ) tmgk log2m / log2k ( k - 1 )大大大大 改进:采用胜者树或者败者树
26、,从改进:采用胜者树或者败者树,从 K 个元素中挑选一个最小的元素仅需个元素中挑选一个最小的元素仅需 log2k 次比次比 较,这时总的时间耗费将下降:较,这时总的时间耗费将下降: logkm log2k ( n - 1 ) tmg log2m ( n - 1 ) tmg 2、胜者树及其使用、胜者树及其使用胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结果,使得更快地挑出亚军、第三名果,使得更快地挑出亚军、第三名 。953、多路平衡归并的实现、多路平衡归并的实现2、胜者树及其使用、胜者树及其
27、使用胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结果,使得更快地挑出亚军、第三名果,使得更快地挑出亚军、第三名 。72959551649527871225849129385766719224748597654321输输入入缓缓冲冲区区输输出出 缓缓冲冲区区5595729976543215注意:挑出冠军注意:挑出冠军需要进行需要进行 k-1 次次比较,此处需要比较,此处需要比较比较 3 次。次。973、多路平衡归并的实现、多路平衡归并的实现2、胜者树及其使用、胜者树及其使用胜者进入下一轮,直
28、至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结果,使得更快地挑出亚军、第三名果,使得更快地挑出亚军、第三名 。729169751649527871225849129385766719224748597654321输输入入缓缓冲冲区区输输出出 缓缓冲冲区区779167299765432157注意:挑出亚军注意:挑出亚军需要进行需要进行 log2k 次比较,此处需次比较,此处需要比较要比较 2 次。次。9123、多路平衡归并的实现、多路平衡归并的实现2、胜者树及其使用、胜者树及其使用胜者进入下一轮,直至决出本次
29、比赛的冠军。决出冠军之后,充分利用上一次比赛的结胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结果,使得更快地挑出亚军、第三名果,使得更快地挑出亚军、第三名 。1229169951649527871225849129385766719224748597654321输输入入缓缓冲冲区区输输出出 缓缓冲冲区区912916122997654321579注意:在输出缓注意:在输出缓冲区被写满之后冲区被写满之后,全部内容输出,全部内容输出至带或盘。至带或盘。3、多路平衡归并的实现、多路平衡归并的实现2、胜者树及其使用、胜者树及其使用 胜者进入下一轮,直至决出本次比赛的冠军。决
30、出冠军之后,充分利用上一次比赛的胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的 结果,使得更快地挑出亚军、第三名结果,使得更快地挑出亚军、第三名 。 决出第一名需比较:决出第一名需比较: k - 1 次次 决出第二名需比较:决出第二名需比较: log2k 次次 决出第三名需比较:决出第三名需比较: log2k 次次 结果:采用胜者树后,从结果:采用胜者树后,从 K 个元素中挑选一个最小的元素仅需个元素中挑选一个最小的元素仅需 log2k 次比次比 较,这时总的时间耗费下降为:较,这时总的时间耗费下降为:logkm log2k ( n - 1 ) tmg log2m
31、( n - 1 ) tmg 有意思的是该结果和有意思的是该结果和 k 无关,这是通过多用空间换来的。无关,这是通过多用空间换来的。 改进:采用胜者树,改进:采用胜者树,K 个元素中最小的元素输出之后,从根结点到它的相应的叶子结个元素中最小的元素输出之后,从根结点到它的相应的叶子结 点路径上的结点都需要进行修改,为了加快程序运行的速度产生了败者树。点路径上的结点都需要进行修改,为了加快程序运行的速度产生了败者树。2973、多路平衡归并的实现、多路平衡归并的实现3、败者树及其使用、败者树及其使用72959951649527871225849129385766719224748597654321输输
32、入入缓缓冲冲区区输输出出 缓缓冲冲区区97295729976543215注意:挑出冠军注意:挑出冠军需要进行需要进行 k-1 次次比较,此处需要比较,此处需要比较比较 3 次。次。500529163、多路平衡归并的实现、多路平衡归并的实现729169951649527871225849129385766719224748597654321输输入入缓缓冲冲区区输输出出 缓缓冲冲区区57注意:挑出亚军注意:挑出亚军需要进行需要进行 log2k 次比较,此处需次比较,此处需要比较要比较 2 次。次。3、败者树及其使用、败者树及其使用1709162916729976543210529163、多路平衡归
33、并的实现、多路平衡归并的实现3、败者树及其使用、败者树及其使用12291691251649527871225849129385766719224748597654321输输入入缓缓冲冲区区输输出出 缓缓冲冲区区579注意:在输出缓注意:在输出缓冲区被写满之后冲区被写满之后,全部内容输出,全部内容输出至带或盘。至带或盘。119016162916122997654321093、多路平衡归并的实现、多路平衡归并的实现3、败者树的程序实现、败者树的程序实现typedef int LoserTree k ; typedef struct KeyType key; Exnode, External k+1
34、 ;Void K_Merge ( LoserTree &ls,External & b) for ( i = 0; i 0 ) if (bs.key blst.key) s lst; t = t / 2; / s 指示新的胜者的地址。指示新的胜者的地址。 bs.key=blst.key, 那么那么 bs仍是胜者。仍是胜者。 ls0 = s; / AdjustVoid CreateLoserTree ( LoserTree &ls ) bk.key = MINKEY; for ( i=0; i = 0; - - i ) Adjust(ls,i); / CreateLose
35、rTreekk3、多路平衡归并的实现、多路平衡归并的实现 败者树程序实现:败者树程序实现:72959k5164952787122584912938576671922474859321021输输入入缓缓冲冲区区输输出出 缓缓冲冲区区注意:在输出缓注意:在输出缓冲区被写满之后冲区被写满之后,全部内容输出,全部内容输出至带或盘。至带或盘。11k0存于存于 b0 bk-1之中之中注意:注意: bk = - 存于存于 ls0 lsk-1 之中之中33k3、多路平衡归并的实现、多路平衡归并的实现 败者树程序实现:败者树程序实现:72959k516495278712258491293857667192247
36、4859321021输输入入缓缓冲冲区区输输出出 缓缓冲冲区区注意:在输出缓注意:在输出缓冲区被写满之后冲区被写满之后,全部内容输出,全部内容输出至带或盘。至带或盘。11k0存于存于 b0 bk-1之中之中注意:注意: bk = - 存于存于 ls0 lsk-1 之中之中32k3、多路平衡归并的实现、多路平衡归并的实现 败者树程序实现:败者树程序实现:7295935164952787122584912938576671922474859321021输输入入缓缓冲冲区区输输出出 缓缓冲冲区区注意:在输出缓注意:在输出缓冲区被写满之后冲区被写满之后,全部内容输出,全部内容输出至带或盘。至带或盘。1
37、1k0存于存于 b0 bk-1之中之中注意:注意: bk = - 存于存于 ls0 lsk-1 之中之中3213、多路平衡归并的实现、多路平衡归并的实现 败者树程序实现:败者树程序实现:7295935164952787122584912938576671922474859321021输输入入缓缓冲冲区区输输出出 缓缓冲冲区区注意:在输出缓注意:在输出缓冲区被写满之后冲区被写满之后,全部内容输出,全部内容输出至带或盘。至带或盘。11k0存于存于 b0 bk-1之中之中注意:注意: bk = - 存于存于 ls0 lsk-1 之中之中3213、多路平衡归并的实现、多路平衡归并的实现 败者树程序实现
38、:败者树程序实现:7295935164952787122584912938576671922474859321021输输入入缓缓冲冲区区输输出出 缓缓冲冲区区注意:在输出缓注意:在输出缓冲区被写满之后冲区被写满之后,全部内容输出,全部内容输出至带或盘。至带或盘。1100存于存于 b0 bk-1之中之中注意:注意: bk = - 存于存于 ls0 lsk-1 之中之中35213、多路平衡归并的实现、多路平衡归并的实现 败者树程序实现:败者树程序实现:7295935164952787122584912938576671922474859321021输输入入缓缓冲冲区区输输出出 缓缓冲冲区区注意:在
39、输出缓注意:在输出缓冲区被写满之后冲区被写满之后,全部内容输出,全部内容输出至带或盘。至带或盘。1100存于存于 b0 bk-1之中之中 注意:注意:bk = - 存于存于 ls0 lsk-1 之中之中35213、多路平衡归并的实现、多路平衡归并的实现 败者树程序实现:记录输出结束后,可能出现如下情况。此时败者树程序实现:记录输出结束后,可能出现如下情况。此时 bls0 = +,程序结束。,程序结束。3321021输输入入缓缓冲冲区区输输出出 缓缓冲冲区区注意:每一个归注意:每一个归并段的最后加一并段的最后加一个字段为个字段为 + ,即书上所说的即书上所说的 MAXKEY,作为,作为结束条件。
40、结束条件。1100存于存于 b0 bk-1之中之中 注意:注意:bk = - 存于存于 ls0 lsk-1 之中之中3+4、置换、置换-选择排序选择排序1、作用:产生尽可能长的初始归并段。在内存长度一定时,按照通常的排序方法,产生的、作用:产生尽可能长的初始归并段。在内存长度一定时,按照通常的排序方法,产生的 初始归并段的长度只能和内存长度相同,但采用本方法之后可以产生却可以生成初始归并段的长度只能和内存长度相同,但采用本方法之后可以产生却可以生成 两倍内存长度的初始归并段平均情况下)。两倍内存长度的初始归并段平均情况下)。2、实例:、实例:F1:31、21、19、12、26、41、11、37
41、、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、 19194、置换、置换-选择排序选择排序 实例的实现过程:实例的实现过程: F1:31、21、19、12、26、41、11、3
42、7、15、23、29 在带在带 1 上上 步数步数内存缓冲区内容由内存缓冲区内容由 F1 输入)输入)输出结果至带输出结果至带 F2 )131、 21、 1919231、 21、 (12)214、置换、置换-选择排序选择排序 实例的实现过程:实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带在带 1 上上 步数步数内存缓冲区内容由内存缓冲区内容由 F1 输入)输入)输出结果至带输出结果至带 F2 )131、 21、 1919231、 21、 (12)21331、 26、 (12)264、置换、置换-选择排序选择排序 实例的实现过程:实例的实现过程:
43、F1:31、21、19、12、26、41、11、37、15、23、29 在带在带 1 上上 步数步数内存缓冲区内容由内存缓冲区内容由 F1 输入)输入)输出结果至带输出结果至带 F2 )131、 21、 1919231、 21、 (12)21331、 26、 (12)26431、 41、 (12)314、置换、置换-选择排序选择排序 实例的实现过程:实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带在带 1 上上 步数步数内存缓冲区内容由内存缓冲区内容由 F1 输入)输入)输出结果至带输出结果至带 F2 )131、 21、 1919231、 21、
44、(12)21331、 26、 (12)26431、 41、 (12)315(11)、41、 (12)414、置换、置换-选择排序选择排序 实例的实现过程:实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带在带 1 上上 步数步数内存缓冲区内容由内存缓冲区内容由 F1 输入)输入)输出结果至带输出结果至带 F2 )131、 21、 1919231、 21、 (12)21331、 26、 (12)26431、 41、 (12)315(11)、41、 (12)416(11)、(37)、(12) #第一个初始合并段第一个初始合并段4、置换、置换-选择排序选择
45、排序 实例的实现过程:实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带在带 1 上上 步数步数内存缓冲区内容由内存缓冲区内容由 F1 输入)输入)输出结果至带输出结果至带 F2 )131、 21、 1919231、 21、 (12)21331、 26、 (12)26431、 41、 (12)315(11)、41、 (12)416(11)、(37)、(12) #711、37、12114、置换、置换-选择排序选择排序 实例的实现过程:实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带在带 1 上上 步数步数内
46、存缓冲区内容由内存缓冲区内容由 F1 输入)输入)输出结果至带输出结果至带 F2 )131、 21、 1919231、 21、 (12)21331、 26、 (12)26431、 41、 (12)315(11)、41、 (12)416(11)、(37)、(12) #711、37、1211815、37、12124、置换、置换-选择排序选择排序 实例的实现过程:实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带在带 1 上上 步数步数内存缓冲区内容由内存缓冲区内容由 F1 输入)输入)输出结果至带输出结果至带 F2 )131、 21、 1919231、
47、21、 (12)21331、 26、 (12)26431、 41、 (12)315(11)、41、 (12)416(11)、(37)、(12) #711、37、1211815、37、1212915、37、23154、置换、置换-选择排序选择排序 实例的实现过程:实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带在带 1 上上 步数步数内存缓冲区内容由内存缓冲区内容由 F1 输入)输入)输出结果至带输出结果至带 F2 )131、 21、 1919231、 21、 (12)21331、 26、 (12)26431、 41、 (12)315(11)、41、
48、 (12)416(11)、(37)、(12) #711、37、1211815、37、1212915、37、23151029、37、23 234、置换、置换-选择排序选择排序 实例的实现过程:实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带在带 1 上上 步数步数内存缓冲区内容由内存缓冲区内容由 F1 输入)输入)输出结果至带输出结果至带 F2 )131、 21、 1919231、 21、 (12)21331、 26、 (12)26431、 41、 (12)315(11)、41、 (12)416(11)、(37)、(12) #711、37、12118
49、15、37、1212915、37、23151029、37、23 2311 29、37294、置换、置换-选择排序选择排序 实例的实现过程:实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带在带 1 上上 步数步数内存缓冲区内容由内存缓冲区内容由 F1 输入)输入)输出结果至带输出结果至带 F2 )131、 21、 1919231、 21、 (12)21331、 26、 (12)26431、 41、 (12)315(11)、41、 (12)416(11)、(37)、(12) #711、37、1211815、37、1212915、37、23151029、
50、37、23 2311 29、372912 37374、置换、置换-选择排序选择排序 实例的实现过程:实例的实现过程: F1:31、21、19、12、26、41、11、37、15、23、29 在带在带 1 上上 步数步数内存缓冲区内容由内存缓冲区内容由 F1 输入)输入)输出结果至带输出结果至带 F2 )131、 21、 1919231、 21、 (12)21331、 26、 (12)26431、 41、 (12)315(11)、41、 (12)416(11)、(37)、(12) #711、37、1211815、37、1212915、37、23151029、37、23 2311 29、37291
51、2 373713#第二个初始合并段第二个初始合并段第一个初始合并段第一个初始合并段4、置换、置换-选择排序选择排序 3、长度分析:、长度分析: 设内存可以存放设内存可以存放 m 个记录,则首先从文件读入个记录,则首先从文件读入 m 记录到内存。这记录到内存。这 m 个记录个记录 肯定可以归入本初始合并段内。这样,必须从文件中读入肯定可以归入本初始合并段内。这样,必须从文件中读入 m 个记录。这个记录。这 m 个个 记录中平均有一半可以归入本合并段,一半归入下一合并段。记录中平均有一半可以归入本合并段,一半归入下一合并段。 因而,合并段的平均长度为:因而,合并段的平均长度为:m + m/2 +
52、m/4 + = 2m 所以,在平均情况下,合并段的平均长度为所以,在平均情况下,合并段的平均长度为 2m 。 书上介绍:该结论由:书上介绍:该结论由:EFMoore 在在 1961 年从置换选择排序同扫雪机的类比中得年从置换选择排序同扫雪机的类比中得 到的。不过我认为这种证明完全是胡扯。到的。不过我认为这种证明完全是胡扯。4、程序实现:、程序实现: 可以用败者树的办法可以用败者树的办法 加以实现。加以实现。32144、置换、置换-选择排序选择排序5、败者树实现置换、败者树实现置换-选择排序选择排序522901051、49、39、46、38、29、14、61、1546139149151129138154332044、置换、置换-选择排序选择排序5、败者树实现置换、败者树实现置换-选择排序选择排序52293801151、49、39、46、38、29、14、61、1546139149151114238154312044、置换、置换-选择排序选择排序5、败者树实现置换、败者树实现置换-选择排序选择排序5229383901351、49、39、46、38、29、14、61、1546139149151114261154312044、置换、置换-选择排序选择排序5、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年项目管理专业人士资格认证内容试题及答案
- 2025年燃气安全生产管理人员模拟考试题及答案
- 植物园绿色建筑设计与节能环保考核试卷
- 2024年项目管理考试真题解析试题及答案
- 园艺师多功能果园管理试题及答案
- 2023年中国联通博尔塔拉蒙古自治州分公司招聘笔试参考题库附带答案详解
- 2023年中国石化高校毕业生专项招聘笔试参考题库附带答案详解
- 烟草机械设备的远程监控与故障分析考核试卷
- 地铁检修库维修施工方案
- 纸板容器市场前景预测考核试卷
- 安徽省皖南八校2024-2025学年高一下学期4月期中考试数学试题
- 国家发展改革委低空经济司
- 单位体检协议书模板合同
- 委托律师签署协议书
- 图文工厂转让协议书
- 货物贸易的居间合同
- 2025-2030中国疗养院行业市场深度分析及前景趋势与投资研究报告
- 2025年国企山东济南公共交通集团有限公司招聘笔试参考题库附带答案详解
- (三模)吉林市2025届高三第三次模拟测试 历史试卷(含答案详解)
- 科室医疗质量管理小组职责
- 县域产业布局与升级-深度研究
评论
0/150
提交评论