《外部排序》课件.ppt
《《外部排序》课件.ppt》由会员分享,可在线阅读,更多相关《《外部排序》课件.ppt(61页珍藏版)》请在三一办公上搜索。
1、1、外存信息的存取2、外部排序的方法3、多路平衡归并的实现4、置换-选择排序5、最佳归并树,第11章 外部排序,1、外存信息的存取2、外部排序的方法,1、外存信息的存取,1、外部排序:内部排序:信息一次可全部调入内存,信息在内存中的处理时间是主要的时间耗费。外部排序:信息量巨大,无法一次调入内存。只能驻留在带、盘、CD-ROM 上。特点 为内存运行时间短,内、外存进行交换需要时间长。减少 I/O 时间成为主 要矛盾。,记录(Record):数据项的集合存于内存,称之为结点。如果存之于外存,则叫做记 录。原因起源于是在历史上研究管理应用和计算机科学的两部分人员的习惯。 域(场):记录中的每个数据
2、项,称之为域(Field) 。 文件:记录的集合。 关键字:唯一标识记录的域,称之为关键字。 有序文件:文件根据关键字的大小。排成递增或递减的序列。,2、基本术语:,3、常用外存:,磁带:由磁带介质、读、写磁头、驱动器、接收盘和原始盘组成。 便宜、可反复使用、是一种顺序存取设备。 查找费时、速度幔。,1、外存信息的存取1、外部排序: 记录(Record):数,1、外存信息的存取,3、常用外存:,磁带:由磁带介质、读、写磁头、驱动器、接收盘和原始盘组成。 便宜、可反复使用、是一种顺序存取设备。 查找费时、速度慢。 带信息的表示:,一种磁化方向、代表1,另一种磁化方向,代表0,01001001,1
3、0101111,1、外存信息的存取3、常用外存: 磁带:由磁带介质、读、写,1、外存信息的存取,3、常用外存:,磁带:由磁带介质、读、写磁头、驱动器、接收盘和原始盘组成。 便宜、可反复使用、是一种顺序存取设备。 查找费时、速度慢(尤其是查找末端记录时)。,.,.,磁带机走向,读出头,写入头,原始盘,接收盘,带文件的组织:,记录 1,记录 3,记录 2,IRG(Inter Record Gap)记录间隙,1、外存信息的存取3、常用外存: 磁带:由磁带介质、读、写,1、外存信息的存取,3、常用外存:,带文件的组织:,记录 1,记录 3,记录 2,IRG(Inter Record Gap)记录间隙,
4、v,t,可靠读写区,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) 利用率 1/7= 14 % 必须改进带的利用率 !,带文件的读写时间:T i/o = ta + ntw ta 延迟时间:读写头到达相应的记录起始位置的时间。 tw 读/写一个字符的时间; n 字符数。,读写头,1、外存信息的存取3、
5、常用外存: 带文件的组织:记录 1,1、外存信息的存取,3、常用外存:,带文件的组织的改进:,块 1,块 3,块 2,IBG(Inter Block Gap)块间间隙,IBG:.5.75 inch,带来的好处是什么? 每一块是一个物理记录,包含若干个逻辑记录。 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、常用外存: 带文件的组织的改进:块,1、外存信
6、息的存取,3、常用外存:,磁盘:由存取装置、读、写磁头、活动臂、盘片(磁道、扇区)、旋转主轴构成。 速度快、容量大、直接存取设备。 种类:固定头磁盘、活动头磁盘 固定头磁盘:每个磁道都有一个磁头(速度快) 活动头磁盘:每个盘面共用一个磁头, 增加了找道的时间,应用广泛。,柱面:各盘面的直径相同的磁道的总和。,物理位置:盘组号、若干个磁盘构成一组,系统可能有许 多组。 柱面号、 磁道号、 块(扇区号),盘文件的读写时间:T i/o = tseck + tla + ntwm tseck :找道时间tla :等待时间twm :传输时间/ 字符,n 字符数。,1、外存信息的存取3、常用外存: 磁盘:由
7、存取装置、读、写,2、外部排序的方法,1、步骤:,生成合并段(run):读入文件的部分记录到内存 在内存中进行内部排序 将排好序的这些记录写入外存,形成合并段 再读入该文件 的下面的记录,往复进行,直至文件中的记录全部形成合并段 为止。,外部合并:将上一阶段生成的合并段调入内存,进行合并,直至最后形成一个有序的文 件。,平衡合并分类法:被合并的初始合并段均匀分布在 K 条磁带上,即分布在 T1、T2、 Tk 上。对这 K 条带进行合并,将生成的中间归并段分布在 TK+1、 TK+2 、 T2K 上。然后,循环往复,直至最后形成一个 单一的合并段为止。e.g: 平衡 2 路归并, K 2。 2K
8、 = 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 5、12,2、外部排序的方法1、步骤: 生成合并段(run):读入文,2、外部排序的方法,初始分布:,R(1 1000),R(20013000),R(4001. 5001),R(1001 2000),R(3001400
9、0),R(5001. 6000),T1,T2,T4:空,T3 :空,第一趟归并:,T1 :空,T2 :空,T3 :,T4:,R(1 2000),R(40016000),R(2001 4000),2、外部排序的方法 初始分布:R(1 1000)R(2,2、外部排序的方法,第二趟归并:,T3 :空,T4 :空,T1 :,T2:,R(1 4000),R(4001 6000),第三趟归并:,T3 :,T4 :空,T1 :空,T2:空,R(1 6000),2、外部排序的方法 第二趟归并:T3 :空T4 :空T1,2、外部排序的方法,e.g: 平衡 3 路归并, K 3。 2K = 6, 需 6条磁带。六
10、个初始合并段均匀分布在 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。,2、外部排序的方法,e.g: 平衡 3 路归并, K 3。 2K = 6, 需 6条磁带。六个
11、初始合并段均匀分布在 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、外部排序的方法e.g: 平衡 3 路归并, K 3。,2、外部排序的方法,时间分析: 归并趟数: logkm where k 是路数;m 是初始合并段数。 在上例中: log26 = 3 而 log36 = 2 此外,还有一次生成所有合并段的时间。对 文件中的所有的记
12、录全部读写一次。 每一趟归并时,对文件中的所有的记录都要全部读写一次。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
13、),R(5001. 6000),T1,T2,T4:空,T3 :空,2、外部排序的方法 时间分析: 输入、输出缓冲区的安排,2、外部排序的方法,输入、输出缓冲区的安排: 设进行平衡 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. 600
14、0),T1,T2,T4: 空,T3 :空,250 个记录,T1,T2,250 个记录,250 个记录,250 个记录,250 个记录,250 个记录,250 个记录,250 个记录,IBG(Inter Block Gap),初始合并段 ( R(1 1000)),250 个记录,T3,250 个记录大,250 个记录大,K(2)个输入缓冲区,250 个记录大,1个输出缓冲区,读入内存,读入内存,写入磁带,注意:对于缓冲区的安排,有一定的原则。,2、外部排序的方法 输入、输出缓冲区的安排: 设进行平衡,2、外部排序的方法,10 100,T1,T2,150 200,220 300,350 400,1
15、 12,13 14,15 16,17 18,初始合并段 ( R(1 8)),T3,K(2)个输入缓冲区,1 10,1个输出缓冲区,读入内存,读入内存,写入磁带,缓冲区的安排举例:,10 100,1 12,1 10,另一个初始合并段 ( R(1 8)),i,j,2、外部排序的方法 10 100 T1T2 150,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,另一个初始合
16、并段 ( R(1 8)),i,j,2、外部排序的方法 10 100 T1T2 150,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,13 14,1 10,另一个初始合并段 ( R(1 8)),i,j,2、外部排序的方法 10 100 T1T2 150,2、外部排序的方法,10 100,T1,T2,150 200,220 300,350 400,1 12,13 14,1
17、5 16,17 18,初始合并段 ( R(1 8)),T3,K(2)个输入缓冲区,1个输出缓冲区,读入内存,缓冲区的安排举例:,10 100,13 14,1 10,另一个初始合并段 ( R(1 8)),i,j,2、外部排序的方法 10 100 T1T2 150,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,
18、13 14,13 14,2、外部排序的方法 10 100 T1T2 150,3、多路平衡归并的实现,时间分析: logkm 趟 K 大,趟数减少,读写记录的总数将减少。但 K 大,会带来什么问题呢?,1、带、盘的平衡多路归并的性质:,e.g: K = 2 时, m 个归并串。总共 n 个记录。,合并段 1,合并段 2,合并段 m-1,合并段 m,中间合并段,中间合并段,中间合并段,中间合并段,有序文件,层数: log2m +1归并趟数: log2m,3、多路平衡归并的实现 时间分析: logkm,3、多路平衡归并的实现,1、带、盘的平衡多路归并的性质:,e.g: K 2 时, 趟数将会减少。m
19、 个归并串。总共 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 ) tmgk log2m / log2k ( k - 1 ),大,大,3、多路平衡归并的实现1、带、盘的平衡多路归并的性质: e,3、多路平衡归并的
20、实现,1、带、盘的平衡多路归并的性质:,设从 k 个元素中挑选一个最小的元素需 ( k-1) 次比较。 每次比较耗费的时间代价为: tmg,那么在进行 k 平衡归并时,总的时间耗费不会超过: logkm ( k - 1 ) ( n - 1 ) tmg = log2m / log2k ( k - 1 ) ( n - 1 ) tmgk log2m / log2k ( k - 1 ),大,大,改进:采用胜者树或者败者树,从 K 个元素中挑选一个最小的元素仅需 log2k 次比 较,这时总的时间耗费将下降: logkm log2k ( n - 1 ) tmg log2m ( n - 1 ) tmg,2
21、、胜者树及其使用胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结果,使得更快地挑出亚军、第三名 。,3、多路平衡归并的实现1、带、盘的平衡多路归并的性质: 设,9,5,3、多路平衡归并的实现,2、胜者树及其使用胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结果,使得更快地挑出亚军、第三名 。,7,29,5,9,5,516495278,712258491,2938576671,922474859,7,6,5,4,3,2,1,输入缓冲区,输出 缓冲区,5,5,9,5,7,29,9,7,6,5,4,3,2,1,5,注意:挑出冠军需要进行 k-1
22、 次比较,此处需要比较 3 次。,953、多路平衡归并的实现2、胜者树及其使用72959557,9,7,3、多路平衡归并的实现,2、胜者树及其使用胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结果,使得更快地挑出亚军、第三名 。,7,29,16,9,7,516495278,712258491,2938576671,922474859,7,6,5,4,3,2,1,输入缓冲区,输出 缓冲区,7,7,9,16,7,29,9,7,6,5,4,3,2,1,57,注意:挑出亚军需要进行 log2k 次比较,此处需要比较 2 次。,973、多路平衡归并的实现2、胜者树及其使用72
23、916975,9,12,3、多路平衡归并的实现,2、胜者树及其使用胜者进入下一轮,直至决出本次比赛的冠军。决出冠军之后,充分利用上一次比赛的结果,使得更快地挑出亚军、第三名 。,12,29,16,9,9,516495278,712258491,2938576671,922474859,7,6,5,4,3,2,1,输入缓冲区,输出 缓冲区,9,12,9,16,12,29,9,7,6,5,4,3,2,1,579,注意:在输出缓冲区被写满之后,全部内容输出至带或盘。,9123、多路平衡归并的实现2、胜者树及其使用1229169,3、多路平衡归并的实现,2、胜者树及其使用 胜者进入下一轮,直至决出本次
24、比赛的冠军。决出冠军之后,充分利用上一次比赛的 结果,使得更快地挑出亚军、第三名 。 决出第一名需比较: k - 1 次 决出第二名需比较: log2k 次 决出第三名需比较: log2k 次,结果:采用胜者树后,从 K 个元素中挑选一个最小的元素仅需 log2k 次比 较,这时总的时间耗费下降为:logkm log2k ( n - 1 ) tmg log2m ( n - 1 ) tmg 有意思的是该结果和 k 无关,这是通过多用空间换来的。,改进:采用胜者树,K 个元素中最小的元素输出之后,从根结点到它的相应的叶子结 点路径上的结点都需要进行修改,为了加快程序运行的速度产生了败者树。,3、多
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 外部排序 外部 排序 课件

链接地址:https://www.31ppt.com/p-1291837.html