本章目录
1.外存信息的存储
2.外部排序的方法
3.多路归并实现
4.置换-选择排序
5.最佳归并树
外存信息的存储
计算机的两种存储器:内存储器,外存储器
磁带信息的存储,磁带上相邻的两组字符之间要留一个空白区,称为间隙IRG。
外部排序的方法
外部排序由两个独立的阶段组成:
1.按可用内存大小,将外存上含n个记录的文件分成若干长度为l的子文件或端,这些子文件和段称为归并段或顺串,将这些段一次读入内存,然后进行内部排序,将获得的有序的子文件重新写入外存。
2.对这些有序子文件进行逐趟归并,直至得到整个有序文件。
2-路平衡归并:
5-路平衡归并:
多路归并实现
k路归并中,每得到一个有序段中的记录需要进行k-1次比较。
采用败者树来减少比较次数
取最小值的败者树的构造方法:数组B记录输入的k个关键字(即K-路归并中k个子文件中分别取一个关键字),数组S记录败者,S数组的初始值都为最小整数MININT,S[0]记录冠军。数组B中的数据B[i],依次与其父节点S[(k+i)/2](记录该结点和其兄弟结点中的败者)比较,如果该结点大于父节点,则该结点为新败者,记录到S[(k+i)/2]结点中,用t记录胜者,将胜者再与其父节点比较,做同样处理,直至遍历完B中k个的记录,则t中记录的为最终的胜者。
败者树的调整过程:是败者树构造中的一次遍历过程,将最终胜者取出后从该子文件中继续取后一个记录,放入B中相应位置,进行一次从下到上的遍历。
算法如下:
置换-选择排序
置换-选择排序的目的是为了得到更长的初始归并段,从而减少归并段的数量,从而减少归并的次数。
算法如下:
最佳归并树
在各个归并段的长度不相等时,可以根据归并段的长度构造最佳归并树。