1、数据结构专科辅导八 91801个人总结,仅供交流 个人总结 数据结构专科辅导八-排序的辅导练习题及解答(一)单项选择题1. 若对 n 个元素进行直接插入排序,则进行第 i 趟排序过程前,有序表中的元素个数为( ) 。A n B n+1 C n-1 D 12. 若对 n 个元素进行直接插入排序,在进行第 i 趟排序时,为寻找插入位置最多需要进行( )次元素的比较,假定第 0 号元素放有待查的键值。A n B n-1 C n+1 D 13. 若对 n 个元素进行直接插入排序,在进行第 i 趟排序时,假定元素 ri+1的插入位置为 rj,则需要移动元素的次数为( ) 。A j-i B i-j-1 C
2、 i-j D i-j+14. 若对 n 个元素进行直接插入排序,则进行任一趟排序的过程中,为寻找插入位置而需要的时间复杂性为( ) 。A O(1) B O(n) C O(n2) D O(log2n)5. 在对 n 个元素进行直接插入排序的过程中,共需要进行( )趟。A n B n+1 C n-1 D 2n6. 对 n 个元素进行直接插入排序时间复杂性为( ) 。A O(1) B O(n) C O(n2) D O(log2n)7. 在对 n 个元素进行冒泡排序的过程中,第一趟排序至多需要进行( )对相邻元素之间的交换。A n B n-1 C n+1 D n/28. 在对 n 个元素进行冒泡排序的
3、过程中,最好情况下的时间复杂性为( ) 。A O(1) B O(log2n) C O(n2) D O(n)9. 在对 n 个元素进行冒泡排序的过程中,至少需要( )趟完成。A 1 B n C n-1 D n/210. 在对 n 个元素进行快速排序的过程中,若每次划分得到的左、右两个子区间中元素的个数相等或只差一个,则整个排序过程得到的含两个或两个元素的区间个数大致为( ) 。A n B n/2 C log2n D 2n11. 在对 n 个元素进行快速排序的过程中,第一次划分最多需要移动( )次元素,包括开始把基准元素移动到临时变量的一次在内。A n/2 B n-1 C n D n+112. 在
4、对 n 个元素进行快速排序的过程中,最好情况下需要进行( )躺。A n B n/2 C log2n D 2n13. 在对 n 个元素进行快速排序的过程中,最坏情况下需要进行( )躺。A n B n-1 C n/2 D log2n14. 在对 n 个元素进行快速排序的过程中,平均情况下的时间复杂性为( ) 。A O(1) B O(log2n) C O(n2) D O(nlog2n)15. 在对 n 个元素进行快速排序的过程中,最坏情况下的时间复杂性为( ) 。A O(1) B O(log2n) C O(n2) D O(nlog2n)16. 在对 n 个元素进行快速排序的过程中,平均情况下的空间复
5、杂性为( ) 。A O(1) B O(log2n) C O(n2) D O(nlog2n)17. 在对 n 个元素进行快速排序的过程中,最坏情况下的空间复杂性为( ) 。A O(1) B O(log2n) C O(n2) D O(nlog2n)18. 在对 n 个元素进行直接插入排序的过程中,算法的空间复杂性为( ) 。A O(1) B O(log2n) C O(n2) D O(nlog2n)19. 假定对元素序列(3, 7, 5, 9, 1)进行快速排序,则进行第一次划分时需要移动元素的次数为( ) ,假定不包括开始把基准元素移动到临时变量的一次计算在内。A 1 B 2 C 3 D 420.
6、 对下列四个序列进行快速排序,各以第一个元素为基准进行第一次划分,则在该次划分过程中需要移动元素次数最多的序列为( ) 。A 1, 3, 5, 7, 9 B 9, 7, 5, 3, 1C 5, 3, 1, 7, 9 D 5, 7, 9, 1, 321. 假定对元素序列(7, 3, 5, 9, 1, 12, 8, 15)进行快速排序,则进行第一次划分后,得到的左区间中元素的个数为( ) 。A 2 B 3 C 4 D 522在对 n 个元素进行直接选择排序的过程中,需要进行( )趟选择和交换。A n B n+1 C n-1 D n/222在对 n 个元素进行直接选择排序的过程中,在第 i 趟需要从
7、( )个元素中选择出最小值元素。AA n-i+1 B n-i C i D i+123. 若对 n 个元素进行直接选择排序,则进行任一趟排序的过程中,为寻找最小值元素所需要的时间复杂性为( ) 。A O(1) B O(log2n) C O(n2) D O(n)24. 若对 n 个元素进行堆排序,则在构成初始堆的过程中需要进行( )次筛运算。A 1 B n/2 C n D n-125. 若对 n 个元素进行堆排序,则在由初始堆进行每躺排序的的过程中,共需要进行( )次筛运算。A n+1 B n/2 C n D n-126. 若对 n 个元素进行堆排序,则每次进行筛运算的时间复杂性为( )。A O(
8、1) B O(log2n) C O(n2) D O(n)27. 在对 n 个元素进行堆排序的过程中,时间复杂性为( ) 。A O(1) B O(log2n) C O(n2) D O(nlog2n)28. 在对 n 个元素进行堆排序的过程中,空间复杂性为( ) 。A O(1) B O(log2n) C O(n2) D O(nlog2n)29. 假定对元素序列(7, 3, 5, 9, 1, 12)进行堆排序,并且采用小根堆,则由初始数据构成的初始堆为( ) 。A 1, 3, 5, 7, 9, 12 B 1, 3, 5, 9, 7, 12C 1, 5, 3, 7, 9, 12 D 1, 5, 3,
9、9, 12, 730. 假定一个初始堆为(1, 5, 3, 9, 12, 7, 15, 10),则进行第一趟堆排序后得到的结果为( ) 。A 3, 5, 7, 9, 12, 10, 15, 1 B 3, 5, 9, 7, 12, 10, 15, 1A 3, 7, 5, 9, 12, 10, 15, 1 B 3, 5, 7, 12, 9, 10, 15, 131. 若对 n 个元素进行归并排序,则进行归并的趟数为( ) 。A n B n-1 C n/2 D ?log2n?32. 若对 n 个元素进行归并排序,则进行每一趟归并的时间复杂性为( ) 。A O(1) B O(log2n) C O(n)
10、 D O(n2)33. 若一个元素序列基本有序,则选用( )方法较快。A 直接插入排序 B 直接选择排序C 堆排序 D 快速排序34. 若要从 1000 个元素中得到 10 个最小值元素,最好采用( )方法。A 直接插入排序 B 直接选择排序C 堆排序 D 快速排序35. 若要对 1000 个元素排序,要求既快又稳定,则最好采用( )方法。A 直接插入排序 B 归并排序C 堆排序 D 快速排序36. 若要对 1000 个元素排序,要求既快又节省存储空间,则最好采用( )方法。A 直接插入排序 B 归并排序C 堆排序 D 快速排序37. 在下列排序方法中,空间复杂性为 O(log2n)的方法为(
11、 ) 。A 直接选择排序 B 归并排序C 堆排序 D 快速排序38. 在平均情况下速度最快的排序方法为( ) 。A 直接选择排序 B 归并排序C 堆排序 D 快速排序(二)填空题1每次从无序子表中取出一个元素,把它插入到有序子表中的适当位置,此种排序方法叫做_排序;每次从无序子表中挑选出一个最小或最大元素,把它交换到有序表的一端,此种排序方法叫做_排序。2每次直接或通过基准元素间接比较两个元素,若出现逆序排列时就交换它们的位置,此种排序方法叫做_排序;每次使两个相邻的有序表合并成一个有序表的排序方法叫做_排序。3在直接选择排序中,记录比较次数的时间复杂性为_,记录移动次数的时间复杂性为_。4.
12、 在堆排序的过程中,对 n 个记录建立初始堆需要进行_次筛运算,由初始堆到堆排序结束,需要对树根结点进行_次筛运算。5在堆排序的过程中,对任一分支结点进行筛运算的时间复杂性为_,整个堆排序过程的时间复杂性为_。6. 对 n 个记录进行冒泡排序时,最少的比较次数为_,最少的趟数为_。个人总结,仅供交流 7. 快速排序在平均情况下的时间复杂性为_,在最坏情况下的时间复杂性为_。个人总结 8快速排序在平均情况下的空间复杂性为_,在最坏情况下的空间复杂性为_。9在二路归并排序中,对 n 个记录进行归并的趟数为_。10. 在归并排序中,进行每趟归并的时间复杂性为_,整个排序过程的时间复杂性为_,空间复杂
13、性为_。11对 20 个记录进行归并排序时,共需要进行_趟归并,在第三趟归并时是把长度为_的有序表两两归并为长度为_的有序表。12. 若对一组记录(46,79,56,38,40,80,35,50,74)进行直接插入排序,当把第 8 个记录插入到前面已排序的有序表时,为寻找插入位置需比较_次。13. 若对一组记录(46,79,56,38,40,80,35,50,74)进行直接选择排序,用 k 表示最小值元素的下标,进行第一趟时 k 的初值为1,则在第一趟选择最小值的过程中,k 的值被修改_次。14若对一组记录(76,38,62,53,80,74,83,65,85)进行堆排序,已知除第一个元素外,
14、以其余元素为根的结点都已是堆,则对第一个元素进行筛运算时,它将最终被筛到下标为_的位置。15假定一组记录为(46,79,56,38,40,84),则利用堆排序方法建立的初始小根堆为_。16假定一个堆为(38,40,56,79,46,84),则利用堆排序方法进行第一躺交换和对根结点筛运算后得到的结果为_。17. 假定一组记录为(46,79,56,38,40,84),在冒泡排序的过程中进行第一趟排序后的结果为_。18. 假定一组记录为(46,79,56,64,38,40,84,43),在冒泡排序的过程中进行第一趟排序时,元素 79 将最终下沉到其后第_个元素的位置。19. 假定一组记录为(46,7
15、9,56,38,40,80),对其进行快速排序的过程中,共需要_趟排序。20. 假定一组记录为(46,79,56,38,40,80),对其进行快速排序的过程中,含有两个或两个以上元素的排序区间的个数为_个。21. 假定一组记录为(46,79,56,25,76,38,40,80),对其进行快速排序的第一次划分后,右区间内元素的个数为_。22. 假定一组记录为(46,79,56,38,40,80),对其进行快速排序的第一次划分后的结果为_。23假定一组记录为(46,79,56,38,40,80,46,75),对其进行归并排序的过程中,第二趟归并后的第 2 个子表为_。24假定一组记录为(46,79
16、,56,38,40,80,46,75,28,46),对其进行归并排序的过程中,第二趟归并后的子表个数为_。25假定一组记录为(46,79,56,38,40,80,46,75,28,46),对其进行归并排序的过程中,第三趟归并后的第 2 个子表为_。26假定一组记录为(46,79,56,38,40,80,46,75,28,46),对其进行归并排序的过程中,供需要_趟完成。27假定一组记录为(46,79,56,38,40,80),对其进行归并排序的过程中,第二趟归并后的结果为_。28. 在时间复杂性为 O(nlog2n)的所有排序方法中,_排序方法是稳定的。29在时间复杂性为 O(n2)的所有排序
17、方法中,_排序方法是不稳定的。30在所有排序方法中,_排序方法采用的是二分法的思想。31在所有排序方法中,_方法使数据的组织采用的是完全二叉树的结构。32在所有排序方法中,_方法采用的是两两有序表合并的思想。33_排序方法使键值大的记录逐渐下沉,使键值小的记录逐渐上浮。34_排序方法能够每次使无序表中的第一个记录插入到有序表中。35_排序方法能够每次从无序表中顺序查找出一个最小值。(三)应用题1. 已知一组记录为(46,74,53,14,26,38,86,65,27,34),给出采用直接插入排序法进行排序时每一趟的排序结果。2. 已知一组记录为(46,74,53,14,26,38,86,65,
18、27,34),给出采用冒泡排序法进行排序时每一趟的排序结果。3. 已知一组记录为(46,74,53,14,26,38,86,65,27,34),给出采用快速排序法进行排序时每一趟的排序结果。4. 已知一组记录为(46,74,53,14,26,38,86,65,27,34),给出采用直接选择排序法进行排序时每一趟的排序结果。5. 已知一组记录为(46,74,53,14,26,38,86,65,27,34),给出采用堆排序法进行排序时每一趟的排序结果。6. 已知一组记录为(46,74,53,14,26,38,86,65,27,34),给出采用归并排序法进行排序时每一趟的排序结果。(四)算法设计题1
19、. 已知奇偶转换排序方法如下所述:第一趟对所有奇数 i,将ai和 ai+1进行比较,第二趟对所有偶数 i,将 ai和 ai+1进行比较,每次比较时若 aiai+1,则将两者交换,重复以上过程,直到整个数组有序。(1) 试问:排序结束的条件是什么?(2) 编写一个实现上述排序过程的算法:void oesort(int a, int n)。2. 一个线性表中的元素的正整数或负整数,设计一个算法,将正整数和负整数分开,使线性表的前部为负整数,后部为正整数,不要求对它们排序,但要求尽量减少交换次数。3编写一个直接插入排序算法,使得查找插入位置时不是采用顺序的方法而是采用二分的方法。4编写一个对整型数组
20、 An+1中的 A1至 An元素进行选择排序的算法,使得首先从待排序区间中选择出一个最小值并同第一个元素交换,再从待排序区间中选择出一个最大值并同最后一个元素交换,反复进行直到待排序区间中元素的个数不超过 1 为止。练习题参考解答(一)单项选择题1. A 2. C 3. D 4. B 5. C 6. C7. B 8. D 9. A 10. B 11. D 12. C13. B 14. D 15. C 16. B 17. C 18. A19. B 20. D 21. B 22. C 23. D 24. B25. D 26. B 27. D 28. A 29. B 30. A31. D 32. C
21、 33. A 34. B 35. B 36. C37. D 38. D(二)填空题1插入 选择 2快速 归并3O(n2) O(n) 4n/2 n-15O(log2n) O(nlog2n) 6n-1 17O(nlog2n) O(n2) 8. O(log2n) O(n)9?log2n? 10O(n) O(nlog2n) O(n)115 4 8 124132 14815. (38,40,56,79,46,84) 16. (40,46,56,79,84,38)17. (46,56,38,40,79,84) 18. 419. 3 20. 421. 4 2240 384656 79 802340 46 7
22、5 80 24325. 28 46 26. 427. 38 46 56 7940 80 28. 归并29. 直接选择 30. 快速31. 堆排序 32. 归并排序33. 冒泡 34. 直接插入35. 直接选择(三)应用题1. (0) 46 74 53 14 26 38 86 65 27 34(1) 46 74 53 14 26 38 86 65 27 34(2) 46 53 74 14 26 38 86 65 27 34(3) 14 46 53 74 26 38 86 65 27 34(4) 14 26 46 53 74 38 86 65 27 34(5) 14 26 38 46 53 74
23、86 65 27 34(6) 14 26 38 46 53 74 86 65 27 34(7) 14 26 38 46 53 65 74 86 27 34(8) 14 26 27 38 46 53 65 74 86 34(9) 14 26 27 34 38 46 53 65 74 862. (0) 46 74 53 14 26 38 86 65 27 34(1) 46 53 14 26 38 74 65 27 34 86(2) 46 14 26 38 53 65 27 34 74 86(3) 14 26 38 46 53 27 34 65 74 86(4) 14 26 38 46 27 34
24、53 65 74 86(5) 14 26 38 27 34 46 53 65 74 86(6) 14 26 27 34 38 46 53 65 74 86个人总结,仅供交流 (7) 14 26 27 34 38 46 53 65 74 863.(0) 46 74 53 14 26 38 86 65 27 34个人总结 (1) 34 27 38 14 26 46 86 65 53 74(2) 26 27 14 34 38 46 74 65 53 86(3) 14 26 27 34 38 46 53 65 74 86(4) 14 26 27 34 38 46 53 65 74 864.(0) 46
25、 74 53 14 26 38 86 65 27 34(1) 14 74 53 46 26 38 86 65 27 34(2) 14 26 53 46 74 38 86 65 27 34(3) 14 26 27 46 74 38 86 65 53 34(4) 14 26 27 34 74 38 86 65 53 46(5) 14 26 27 34 38 74 86 65 53 46(6) 14 26 27 34 38 46 86 65 53 74(7) 14 26 27 34 38 46 53 65 86 74(8) 14 26 27 34 38 46 53 65 86 74(9) 14 26
26、 27 34 38 46 53 65 74 865.构成初始堆(即建堆)的过程:1 2 3 4 5 6 7 8 9 10(0) 46 74 53 14 26 38 86 65 27 34(1) 46 74 53 14 26 38 86 65 27 34(2) 46 74 53 14 26 38 86 65 27 34(3) 46 74 38 14 26 53 86 65 27 34(4) 46 14 38 27 26 53 86 65 74 34(5) 14 26 38 27 34 53 86 65 74 46进行堆排序的过程:(0) 14 26 38 27 34 53 86 65 74 46
27、(1) 26 27 38 46 34 53 86 65 74 14(2) 27 34 38 46 74 53 86 65 26 14(3) 34 46 38 65 74 53 86 27 26 14(4) 38 46 53 65 74 86 34 27 26 14(5) 46 65 53 86 74 38 34 27 26 14(6) 53 65 74 86 46 38 34 27 26 14(7) 65 86 74 53 46 38 34 27 26 14(8) 74 86 65 53 46 38 34 27 26 14(9) 86 74 65 53 46 38 34 27 26 146.(0) 46745314263886652734(1) 46 7414 5326 3865 8627 34(2) 14 46 53 7426 38 65 8627 34(3) 14 26 38 46 53 65 74 8627 34(3) 14 26 27 34 38 46 53 65 74 86(四)算法设计题每个算法设计题解答从略。11个人总结 个人总结,仅供交流