重要概念
1. 若考虑基数排序,则在排序过程中,主要进行的两种基本操作是关键字的比较和记录的移动·。
2. 直接插入排序用监视哨的作用是免去每一次查找过程中每一步都要检测整个查找表是否查找完毕,提高了查找效率。
3. 对n个元素的序列进行起泡排序时,最少的比较次数是n-1。
4. 对n个记录的表r[1...n]进行简单选择排序,所需进行的关键字之间的比较次数为n(n-1)/2。
5. 简单选择排序算法的最好和最坏情况时间复杂度分别为O(n^2)和O(n^2)。
6. 直接选择排序算法在最好情况下所做的交换元素次数为0。
7. 一组记录的排序码为(25,48,16,35,79,82,23,40,36,72),其中含有5个长度为2的有序表,按2路归并排序的方法对该序列进行一趟排序归并后的结果为(16,25,35,48,23,40,79,82,72),操作为两组(四个)长度为2的有序表进行归并,第5个长度为2的有序表不动,等待和前面长度为8的有序表合并。
8. 设用希尔排序对数组{98,36,-9,0,47,23,1,8,10,7}进行排序,给出的步长(也称增量序列),依次为4,2,1,则排序需要3趟,写出第一趟结束后,数组中数据的排列次序{10,7,-9,0,47,23,1,8,98,36}。
9. 设要将线性表{45,86,99,76,43,19,67,26,65,72,85,14}从小到大进行排序,则使用冒泡排序,初始步长为4的Shell排序,归并排序和以第一个元素为分界元素的快速排序进行第一趟扫描的结果分别为?,?,?,?。
10. 关键字序列(Q,H,C,Y,Q,A,M,S,R,D,F,X),要按照关键字值递增的次序进行排序,若采用初始步长为4的shell排序法,则一趟扫描的结果是?;若采用以第一个元素为分界元素的快速排序法,则扫描一趟的结果为?。
11. 快速排序在每次划分能得到两个长度相等的子文件,设文件长度为n=2^k-1,第一遍划分得到两个长度为n/2的子文件,第二遍划分得到4个长度为n/4的子文件,以此类推,总共进行k=log2^(n+1)次划分,在最后一趟划分时,各子文件长度均为1,排序结束。的情况下最易发挥其长处。
12. 若一组记录的排序码为{46,79,56,38,40,84},利用堆排序的建立的初始堆是84,79,56,38,40,46。
13. 高度为h的堆中,最多有2^h-1个元素,最少为2^(h-1)个元素。
14. 堆排序的算法时间复杂度为O(nlog2^n)。
15. 在堆排序中,首先需要进行的操作为建堆。
17. 堆是一种有用的数据结构,堆排序是一种选择排序,堆实质上是一棵完全二叉树结点的层次序列。对含有n个元素的序列进行排序时,堆排序的时间复杂度为O(nlog2^n),所需的附加存储结点为1个。关键字序列{05,23,16,68,94,72,71,73}满足堆的性质,且为小根堆。
18. 每次使用两个有序表合并成一个有序表,这种排序方法叫做归并排序。
19. 按LSD(最低位优先法排序)进行多关键字排序,除最低位关键字之外,对每个关键字进行排序时,只能用稳定的排序方法。
20. 分别采用堆排序,快速排序,冒泡排序和归并排序,对初态为有序的表,则最省时间的是冒泡排序算法,最费时间的是快速排序算法。
21. 不受待排序初始序列影响,时间复杂度为O(n^2)的排序算法是简单选择排序,在排序算法的最后一趟开始之前,所有元素都可能不在其最终位置上的排序算法是直接插入排序(最小的元素在最后时)。
22. 磁盘排序过程中主要是先生成初始归并段,然后对初始归并段合并,并提高排序速度很重要是减少外存信息读写次数(即减少归并趟数),我们将采用增加归并路数和减少初始归并段个数的方法来提高排序速度。
23. 在基于关键字比较且时间为O(nlog2^n)的排序中,若要求排序是稳定的,则可选用归并排序;若要求就地排序(即辅助空间为O(1)),则可以选用堆排序。
24. 外排序的基本操作过程是内外存之间的数据交换。
25. 外部排序的基本方法是多路归并排序,但在之前必须生成有序归并段(顺串),归并。
26. 设工作区的容量为W,则置换—选择排序法所得到的初始归并段长度的期望值为2W。