第九章_排序3.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第九章_排序3.ppt》由会员分享,可在线阅读,更多相关《第九章_排序3.ppt(99页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、7.9 外部排序外部排序当待排序的对象数目特别多时,在内存中不能当待排序的对象数目特别多时,在内存中不能当待排序的对象数目特别多时,在内存中不能当待排序的对象数目特别多时,在内存中不能一次处理。必须把它们以文件的形式存放于外存,一次处理。必须把它们以文件的形式存放于外存,一次处理。必须把它们以文件的形式存放于外存,一次处理。必须把它们以文件的形式存放于外存,排序时再把它们一部分一部分调入内存进行处理。排序时再把它们一部分一部分调入内存进行处理。排序时再把它们一部分一部分调入内存进行处理。排序时再把它们一部分一部分调入内存进行处理。这样,在排序过程中必须不断地在内存与外存之间这样,在排序过程中必
2、须不断地在内存与外存之间这样,在排序过程中必须不断地在内存与外存之间这样,在排序过程中必须不断地在内存与外存之间传送数据。这种基于外部存储设备(或文件)的排传送数据。这种基于外部存储设备(或文件)的排传送数据。这种基于外部存储设备(或文件)的排传送数据。这种基于外部存储设备(或文件)的排序技术就是外排序。序技术就是外排序。序技术就是外排序。序技术就是外排序。计计算算机机一一般般有有两两种种存存储储器器:内内存存储储器器和和外外存存储储器。器。内内存存储储器器存存储储的的信信息息可可随随机机存存取取、存存取取速速度度快快、价格贵、存储容量小。价格贵、存储容量小。外外存存储储器器包包括括磁磁带带和
3、和磁磁盘盘,前前者者为为顺顺序序存存取取的的设备,后者为随机存取的设备。设备,后者为随机存取的设备。磁盘是一种随机存取的设备,其特点是容量大,存磁盘是一种随机存取的设备,其特点是容量大,存磁盘是一种随机存取的设备,其特点是容量大,存磁盘是一种随机存取的设备,其特点是容量大,存取速度快,可直接存取任意字符组(记录)。取速度快,可直接存取任意字符组(记录)。取速度快,可直接存取任意字符组(记录)。取速度快,可直接存取任意字符组(记录)。磁盘的结构:磁盘的结构:磁盘的结构:磁盘的结构:动臂 主轴读写头磁盘信息的存取磁盘信息的存取一个磁盘由若干个盘面组成,一个盘面时称为单一个磁盘由若干个盘面组成,一个
4、盘面时称为单面磁盘,两个盘面时称为双面磁盘,多个盘面时称面磁盘,两个盘面时称为双面磁盘,多个盘面时称为磁盘组为磁盘组(磁盘组中,不同的盘面用不同的面号表示磁盘组中,不同的盘面用不同的面号表示);每个盘面由若干个称为磁道的同心圆组成;每个盘面由若干个称为磁道的同心圆组成(同一同一个盘面上,不同的磁道用不同的磁道号表示个盘面上,不同的磁道用不同的磁道号表示);每个;每个磁道又被划分为若干个称为扇区的块组成磁道又被划分为若干个称为扇区的块组成(同一个磁同一个磁道上,不同的扇区用不同的扇区号表示道上,不同的扇区用不同的扇区号表示);数据以块;数据以块为单位存储在各个扇区上。为单位存储在各个扇区上。所以
5、,(面号,磁道号,扇区号)构成了磁盘上所以,(面号,磁道号,扇区号)构成了磁盘上标识一个数据块的唯一的地址。同磁带一样,每个标识一个数据块的唯一的地址。同磁带一样,每个块被定义成相同的大小,存取时每次以块为单位读块被定义成相同的大小,存取时每次以块为单位读写数据。写数据。磁盘上,读写一块信息所需的时间由三部分组成:磁盘上,读写一块信息所需的时间由三部分组成:磁盘上,读写一块信息所需的时间由三部分组成:磁盘上,读写一块信息所需的时间由三部分组成:T TI/OI/O=t ts s+t tl l+t trwrw 其中,其中,其中,其中,t ts s为为为为寻查时间,即读写磁头定位的时间。寻查时间,即
6、读写磁头定位的时间。寻查时间,即读写磁头定位的时间。寻查时间,即读写磁头定位的时间。t tl l为为为为等等等等待待待待时时时时间间间间,即即即即等等等等待待待待信信信信息息息息块块块块的的的的初初初初始始始始位位位位置置置置旋旋旋旋转转转转到到到到磁头下面的时间。磁头下面的时间。磁头下面的时间。磁头下面的时间。t trwrw为将为将为将为将在内存和磁盘之间传输一个数据快所需要在内存和磁盘之间传输一个数据快所需要在内存和磁盘之间传输一个数据快所需要在内存和磁盘之间传输一个数据快所需要的时间。的时间。的时间。的时间。由于外部排序牵涉到待排序数据元素的输入、输由于外部排序牵涉到待排序数据元素的输入
7、、输由于外部排序牵涉到待排序数据元素的输入、输由于外部排序牵涉到待排序数据元素的输入、输出,因此,减少输入、输出的次数是外排序需要解出,因此,减少输入、输出的次数是外排序需要解出,因此,减少输入、输出的次数是外排序需要解出,因此,减少输入、输出的次数是外排序需要解决的主要问题。决的主要问题。决的主要问题。决的主要问题。当对象以文件形式存放于磁盘上的时候,通常是当对象以文件形式存放于磁盘上的时候,通常是当对象以文件形式存放于磁盘上的时候,通常是当对象以文件形式存放于磁盘上的时候,通常是按物理块存储的。物理块也叫做页块,是磁盘存取按物理块存储的。物理块也叫做页块,是磁盘存取按物理块存储的。物理块也
8、叫做页块,是磁盘存取按物理块存储的。物理块也叫做页块,是磁盘存取的基本单位。的基本单位。的基本单位。的基本单位。即使需要多遍排序,在一遍排序时,最好是所有即使需要多遍排序,在一遍排序时,最好是所有即使需要多遍排序,在一遍排序时,最好是所有即使需要多遍排序,在一遍排序时,最好是所有待排序元素输入、输出各一次。待排序元素输入、输出各一次。待排序元素输入、输出各一次。待排序元素输入、输出各一次。满足此要求的排序方法为:归并排序。满足此要求的排序方法为:归并排序。满足此要求的排序方法为:归并排序。满足此要求的排序方法为:归并排序。外部排序的要求外部排序的要求外部排序基本上由两个相对独立的阶段组成。外部
9、排序基本上由两个相对独立的阶段组成。外部排序基本上由两个相对独立的阶段组成。外部排序基本上由两个相对独立的阶段组成。首先,按可用内存大小,将外存上含首先,按可用内存大小,将外存上含首先,按可用内存大小,将外存上含首先,按可用内存大小,将外存上含n n个记录的文个记录的文个记录的文个记录的文件分成若干长度为件分成若干长度为件分成若干长度为件分成若干长度为L L的子文件或段(的子文件或段(的子文件或段(的子文件或段(segmentsegment),),),),依次读依次读依次读依次读入内存并利用有效的内部排序方法对它们进行排序,入内存并利用有效的内部排序方法对它们进行排序,入内存并利用有效的内部排
10、序方法对它们进行排序,入内存并利用有效的内部排序方法对它们进行排序,并将排序后得到的有序子文件重新写入外存,通常称并将排序后得到的有序子文件重新写入外存,通常称并将排序后得到的有序子文件重新写入外存,通常称并将排序后得到的有序子文件重新写入外存,通常称这些有序子文件为这些有序子文件为这些有序子文件为这些有序子文件为归并段归并段归并段归并段或顺串(或顺串(或顺串(或顺串(runrun););););然后,对这些归并段进行逐趟归并,使归并段(有然后,对这些归并段进行逐趟归并,使归并段(有然后,对这些归并段进行逐趟归并,使归并段(有然后,对这些归并段进行逐趟归并,使归并段(有序的子文件)逐渐由小至大
11、,直至得到整个有序文件序的子文件)逐渐由小至大,直至得到整个有序文件序的子文件)逐渐由小至大,直至得到整个有序文件序的子文件)逐渐由小至大,直至得到整个有序文件为止。为止。为止。为止。显然,第一阶段的工作是前面已经讨论过的内容。显然,第一阶段的工作是前面已经讨论过的内容。显然,第一阶段的工作是前面已经讨论过的内容。显然,第一阶段的工作是前面已经讨论过的内容。这里主要讨论第二阶段即归并的过程。这里主要讨论第二阶段即归并的过程。这里主要讨论第二阶段即归并的过程。这里主要讨论第二阶段即归并的过程。外部排序的方法外部排序的方法从一个具体例子来看外排中的归并是如何进行的。从一个具体例子来看外排中的归并是
12、如何进行的。从一个具体例子来看外排中的归并是如何进行的。从一个具体例子来看外排中的归并是如何进行的。假设有一个含假设有一个含假设有一个含假设有一个含1000010000个记录的文件,首先通过个记录的文件,首先通过个记录的文件,首先通过个记录的文件,首先通过1010次次次次内部排序得到内部排序得到内部排序得到内部排序得到1010个初始归并段个初始归并段个初始归并段个初始归并段R1R1R10R10,其中每一段其中每一段其中每一段其中每一段都含都含都含都含10001000个记录。然后对它们作如下图所示的两两归个记录。然后对它们作如下图所示的两两归个记录。然后对它们作如下图所示的两两归个记录。然后对它
13、们作如下图所示的两两归并,直至得到一个有序文件为止。并,直至得到一个有序文件为止。并,直至得到一个有序文件为止。并,直至得到一个有序文件为止。R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R21 R22 R31 R41将两个有序段归并成一个有序段的过程,若在内将两个有序段归并成一个有序段的过程,若在内将两个有序段归并成一个有序段的过程,若在内将两个有序段归并成一个有序段的过程,若在内存进行,则很简单。但在外部排序中需要做额外的工存进行,则很简单。但在外部排序中需要做额外的工存进行,则很简单。但在外部排序中需要做额外的工存进行,则很简单。但
14、在外部排序中需要做额外的工作。作。作。作。对外存上信息的读对外存上信息的读对外存上信息的读对外存上信息的读/写是以写是以写是以写是以“物理块物理块物理块物理块”为单位的。为单位的。为单位的。为单位的。假设在上例中每个物理块可以容纳假设在上例中每个物理块可以容纳假设在上例中每个物理块可以容纳假设在上例中每个物理块可以容纳10001000个记录,则个记录,则个记录,则个记录,则1000 01000 0个记录需要个记录需要个记录需要个记录需要1010个物理快存放,每一趟归并需进个物理快存放,每一趟归并需进个物理快存放,每一趟归并需进个物理快存放,每一趟归并需进行行行行1010次次次次“读读读读”和和
15、和和1010次次次次“写写写写”,四趟归并加上得到初始,四趟归并加上得到初始,四趟归并加上得到初始,四趟归并加上得到初始归并段所需内部排序时所需进行的读归并段所需内部排序时所需进行的读归并段所需内部排序时所需进行的读归并段所需内部排序时所需进行的读/写使得在外排写使得在外排写使得在外排写使得在外排中总共需进行(中总共需进行(中总共需进行(中总共需进行(10101010)44(10101010)100100次的次的次的次的读读读读/写。写。写。写。若把内存区域等份地分为若把内存区域等份地分为若把内存区域等份地分为若把内存区域等份地分为3 3个缓冲区。其中的两个个缓冲区。其中的两个个缓冲区。其中的
16、两个个缓冲区。其中的两个为输入缓冲区,一个为输出缓冲区,可以在内存中利为输入缓冲区,一个为输出缓冲区,可以在内存中利为输入缓冲区,一个为输出缓冲区,可以在内存中利为输入缓冲区,一个为输出缓冲区,可以在内存中利用简单用简单用简单用简单2 2路归并函数路归并函数路归并函数路归并函数mergemerge实现实现实现实现2 2路归并。路归并。路归并。路归并。首先首先首先首先,从参加归并排序的两个输入归并段从参加归并排序的两个输入归并段从参加归并排序的两个输入归并段从参加归并排序的两个输入归并段R1R1和和和和R2R2中分别读入一块,放在输入缓冲区中分别读入一块,放在输入缓冲区中分别读入一块,放在输入缓
17、冲区中分别读入一块,放在输入缓冲区1 1和输入缓冲区和输入缓冲区和输入缓冲区和输入缓冲区2 2中。中。中。中。然后,在内存中进行然后,在内存中进行然后,在内存中进行然后,在内存中进行2 2路归并,归并出来的对象顺序存路归并,归并出来的对象顺序存路归并,归并出来的对象顺序存路归并,归并出来的对象顺序存放到输出缓冲区中。放到输出缓冲区中。放到输出缓冲区中。放到输出缓冲区中。如果用如果用如果用如果用t tISIS表示为得到一个初始归并段进行内部排表示为得到一个初始归并段进行内部排表示为得到一个初始归并段进行内部排表示为得到一个初始归并段进行内部排序所需时间的均值、序所需时间的均值、序所需时间的均值、
18、序所需时间的均值、t tIOIO表示一个数据快进行一次外存表示一个数据快进行一次外存表示一个数据快进行一次外存表示一个数据快进行一次外存读读读读/写时间的均值、写时间的均值、写时间的均值、写时间的均值、t tmgmg表示对每个记录进行内部归并表示对每个记录进行内部归并表示对每个记录进行内部归并表示对每个记录进行内部归并所需时间、所需时间、所需时间、所需时间、mm为经过内部排序之后得到的初始归并段为经过内部排序之后得到的初始归并段为经过内部排序之后得到的初始归并段为经过内部排序之后得到的初始归并段的个数、的个数、的个数、的个数、s s为归并的趟数、为归并的趟数、为归并的趟数、为归并的趟数、d d
19、为总的读为总的读为总的读为总的读/写次数,则一般写次数,则一般写次数,则一般写次数,则一般情况下,外部排序所需总的时间为:情况下,外部排序所需总的时间为:情况下,外部排序所需总的时间为:情况下,外部排序所需总的时间为:m*m*t tISIS+d*+d*t tIOIO+s*n*+s*n*t tmgmg 其中其中其中其中t tIOIO取决于所用的外部设备,显然,取决于所用的外部设备,显然,取决于所用的外部设备,显然,取决于所用的外部设备,显然,t tIOIO较较较较t tISIS和和和和t tmgmg要大得多。从数据组织的角度,对相邻的数据快,要大得多。从数据组织的角度,对相邻的数据快,要大得多。
20、从数据组织的角度,对相邻的数据快,要大得多。从数据组织的角度,对相邻的数据快,我们可通过将它们放置在相同的扇区或相邻的磁道上我们可通过将它们放置在相同的扇区或相邻的磁道上我们可通过将它们放置在相同的扇区或相邻的磁道上我们可通过将它们放置在相同的扇区或相邻的磁道上以减少寻道时间和等待时间。以减少寻道时间和等待时间。以减少寻道时间和等待时间。以减少寻道时间和等待时间。形成初始形成初始归并段归并段输入输出输入输出的时间的时间s趟归并排趟归并排序的时间序的时间对于公式:对于公式:对于公式:对于公式:m*m*t tISIS+d*+d*t tIOIO+s*n*+s*n*t tmgmg由于:由于:由于:由于
21、:t tI I/O/O=t ts s+t tl l+t trwrw 其其其其中中中中,t ts s和和和和t tl l是是是是机机机机械械械械动动动动作作作作,而而而而t trwrw、t tISIS、t tmgmg是是是是电电电电子子子子线路的动作,所以线路的动作,所以线路的动作,所以线路的动作,所以 t tIOIO t tISIS,t tIOIO t tmgmg。提高机械运动速度是有上限的,因此,想要提提高机械运动速度是有上限的,因此,想要提提高机械运动速度是有上限的,因此,想要提提高机械运动速度是有上限的,因此,想要提高外排的效率,应主要着眼于减少外存信息读写高外排的效率,应主要着眼于减少
22、外存信息读写高外排的效率,应主要着眼于减少外存信息读写高外排的效率,应主要着眼于减少外存信息读写的次数的次数的次数的次数d d。下面来分析下面来分析d和和“归并过程归并过程”的关系。若对上例中的关系。若对上例中所得的所得的10个初始归并段进行个初始归并段进行5-路平衡归并(即每一趟将路平衡归并(即每一趟将5个或个或5个以下的有序子文件归并成一个有序子文件),个以下的有序子文件归并成一个有序子文件),则从下图可见,仅需进行二趟归并,外排时总的读则从下图可见,仅需进行二趟归并,外排时总的读/写写次数便减至次数便减至2(10+10)+(10+10)=60,比,比2-路归并减少了路归并减少了40次的读
23、次的读/写。写。R1 R2 R3 R4 R5 R6 R7 R8 R9 R10R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R1 R2 R1 R2 若对若对4500的元素进行排序,每个初始归并段含的元素进行排序,每个初始归并段含900个元素。在同样页块大小的情况下做个元素。在同样页块大小的情况下做2路、路、3路及路及6路路归并归并(当然当然,内存缓冲区的数目也要变化内存缓冲区的数目也要变化),则可做大,则可做大致比较:致比较:可见,对同一文件而言,进行外排时所需读可见,对同一文件而言,进行外排时所需读/写外写外存的次数和归并的趟数存的次数和归并的趟数s成正比。一般情况下,对成正比
24、。一般情况下,对m个个初始归并段进行初始归并段进行k-路平衡归并时,归并的趟数:路平衡归并时,归并的趟数:s=logkm 。因此,增大归并路数,或减少初始归并段数因此,增大归并路数,或减少初始归并段数因此,增大归并路数,或减少初始归并段数因此,增大归并路数,或减少初始归并段数量,可望减少归并趟数,进而减少读写磁盘次数量,可望减少归并趟数,进而减少读写磁盘次数量,可望减少归并趟数,进而减少读写磁盘次数量,可望减少归并趟数,进而减少读写磁盘次数d d。归并路数归并路数归并路数归并路数 k k 总读写磁盘次数总读写磁盘次数总读写磁盘次数总读写磁盘次数 d d 归并趟数归并趟数归并趟数归并趟数 S S
25、 2 40 3 3 30 2 6 20 1一般情况下,对一般情况下,对m个初始归并段进行个初始归并段进行k-路平衡归并路平衡归并时,归并的趟数时,归并的趟数 s=logkm 可见,在可见,在m不变的情况下,增加归并的路数不变的情况下,增加归并的路数k便能减便能减少归并的趟数少归并的趟数s,从而减少外存的读写次数。下图是一从而减少外存的读写次数。下图是一个六路归并的例子:个六路归并的例子:k k路平衡归并与败路平衡归并与败者树者树下面讨论增大下面讨论增大k的问题。如果单纯增加的问题。如果单纯增加k将增加内部归并的时间,分析如下:将增加内部归并的时间,分析如下:对于二路归并,若对于二路归并,若u个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第九 排序
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内