数据结构 第八章 排序 作业(已批改)

判断题

1-1
对N个记录进行堆排序,需要的额外空间为O(N)。

T F

课本P254:堆排序仅需一个记录大小供交换用的辅助存储空间,所以空间复杂度为O(1)

1-2
对N个记录进行简单选择排序,比较次数和移动次数分别为O(N​^2​​)和O(N)。

T F

课本P247;

1-3
对N个记录进行快速排序,在最坏的情况下,其时间复杂度是O(NlogN)。

T F

对N个记录进行快速排序,在最坏的情况下,其时间复杂度是O(N^2);
课本P246;

1-4
希尔排序是稳定的算法。

T F

课本P241;
希尔排序不设考点,跳过;

1-5
对N个不同的数据采用冒泡排序进行从大到小的排序,当元素基本有序时交换元素次数肯定最多。

T F

课本P243:得看"有序"是正序还是逆序;

1-6
要从50个键值中找出最大的3个值,选择排序比堆排序快。

T F

疑惑??
课本P267;

单选题

2-1
下列排序算法中,哪种算法可能出现:在最后一趟开始之前,所有的元素都不在其最终的位置上?(设待排元素个数N>2)

A.冒泡排序
B.插入排序
C.堆排序
D.快速排序

2-2
若数据元素序列{ 11,12,13,7,8,9,23,4,5 }是采用下列排序方法之一得到的第二趟排序后的结果,则该排序算法只能是:

A.冒泡排序
B.选择排序
C.插入排序
D.归并排序

2-3
对一组数据{ 2,12,16,88,5,10 }进行排序,若前三趟排序结果如下: 第一趟排序结果:2,12,16,5,10,88 第二趟排序结果:2,12,5,10,16,88 第三趟排序结果:2,5,10,12,16,88 则采用的排序方法可能是:

A.冒泡排序
B.希尔排序
C.归并排序
D.基数排序

冒泡排序在排由小到大的时候,是先把最大的数往后移的;

2-4
下面四种排序算法中,稳定的算法是:

A.堆排序
B.希尔排序
C.归并排序
D.快速排序

课本P267;
在这里插入图片描述

2-5
对N个不同的数据采用冒泡算法进行从大到小的排序,下面哪种情况下肯定交换元素次数最多?

A.从小到大排好的
B.从大到小排好的
C.元素无序
D.元素基本有序

2-6
对于7个数进行冒泡排序,需要进行的比较次数为:

A.7
B.14
C.21
D.49

6+5+4+3+2+1=21;
课本P243:KCN = n(n-1)/2 = 7*(7-1)/2 = 21;

2-7
排序方法中,从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置的方法称为:

A.插入排序
B.选择排序
C.快速排序
D.归并排序

2-8
对一组包含10个元素的非递减有序序列,采用直接插入排序排成非递增序列,其可能的比较次数和移动次数分别是:

A.100, 100
B.100, 54
C.54, 63
D.45, 44

课本P237-238:非递减有序序列 = 正序,非递增序列 != 逆序;
直接插入排序:
最坏情况:
比较次数 KCN = (n+2)(n-1)/2 = (10+2)(10-1)/2 = 12 * 9 / 2 = 54;
移动次数 RMN = (n+4)(n-1)/2 = 14 * 9 / 2 = 63;
最好情况:
比较次数:n-1 = 9;
移动次数:0;
所以次数应介于两者之间???

2-9
有组记录的排序码为{ 46,79,56,38,40,84 },则利用堆排序的方法建立的初始堆为:

A.79,46,56,38,40,80
B.84,79,56,46,40,38
C.84,56,79,40,46,38
D.84,79,56,38,40,46

参考课本P252 例8.6:从最后一个非终端结点开始筛选;
在这里插入图片描述

2-10
{ 12,9,11,8,7,4,5,13,23 }是下列哪种方法第二趟排序后的结果?

A.归并排序
B.堆排序
C.插入排序
D.基数排序

2-11
对N个记录进行快速排序,在最坏的情况下,其时间复杂度是:

A.O(N)
B.O(NlogN)
C.O(N^​2)
D.O(N^​2logN)

课本P246;

2-12
有组记录的排序码为{46,79,56,38,40,84 },采用快速排序(以位于最左位置的对象为基准而)得到的第一次划分结果为:

A.{38,46,79,56,40,84}
B.{38,79,56,46,40,84}
C.{38,46,56,79,40,84}
D.{40,38,46,56,79,84}

课本P244;
步骤:
在这里插入图片描述
快速排序:在这里插入图片描述
在这里插入图片描述

2-13
对N个元素采用简单选择排序,比较次数和移动次数分别为:

A.O(N^​2​​), O(N)
B.O(N), O(logN)
C.O(logN), O(N^​2)
D.O(NlogN), O(NlogN)

课本P247;

2-14
对于10个数的简单选择排序,最坏情况下需要交换元素的次数为:

A.9
B.36
C.45
D.100

课本P246:最坏情况下,每趟都交换元素,因为排序共 n-1 趟,所以最多需要交换元素的次数为 n-1 = 10-1 = 9 次;

2-16
对N个记录进行堆排序,需要的额外空间为:

A.O(1)
B.O(logN)
C.O(N)
D.O(NlogN)

课本P254;

2-18
若数据元素序列{ 12, 13, 8, 11, 5, 16, 2, 9 }是采用下列排序方法之一得到的第一趟排序后的结果,则该排序算法只能是:

A.快速排序
B.选择排序
C.堆排序
D.归并排序

不懂…

2-19
给出关键字序列{ 431, 56, 57, 46, 28, 7, 331, 33, 24, 63 },下面哪个选择是按次位优先(LSD)链式基数排序进行了一趟分配和收集的结果?

A.→331→431→33→63→24→56→46→57→7→28
B.→56→28→431→331→33→24→46→57→63→7
C.→431→331→33→63→24→56→46→57→7→28
D.→57→46→28→7→33→24→63→56→431→331

基数排序不设考点,跳过;

2-20
将序列{ 2, 12, 16, 88, 5, 10, 34 }排序。若前2趟排序的结果如下:
第1趟排序后:2, 12, 16, 10, 5, 34, 88
第2趟排序后:2, 5, 10, 12, 16, 34, 88
则可能的排序算法是:

A.冒泡排序
B.快速排序
C.归并排序
D.插入排序

2-21
将序列{ 2, 12, 16, 88, 5, 10, 34 }排序。若前2趟排序的结果如下:
第1趟排序后:2, 12, 16, 10, 5, 34, 88
第2趟排序后:2, 5, 10, 12, 16, 34, 88
则可能的排序算法是:

A.冒泡排序
B.归并排序
C.插入排序
D.快速排序

2-22
将序列{ 2, 12, 16, 88, 5, 10, 34 }排序。若前2趟排序的结果如下:
第1趟排序后:2, 12, 16, 10, 5, 34, 88
第2趟排序后:2, 5, 10, 12, 16, 34, 88
则可能的排序算法是:

A.冒泡排序
B.归并排序
C.快速排序
D.插入排序

2-23
数据序列{ 3, 1, 4, 11, 9, 16, 7, 28 }只能是下列哪种排序算法的两趟排序结果?

A.冒泡排序
B.快速排序
C.插入排序
D.堆排序

2-24
设有1000个元素的有序序列,如果用二分插入排序再插入一个元素,则最大比较次数是:

A.1000
B.999
C.500
D.10

2^9 = 512;
log(1000) + 1 = 9 + 1 = 10;

2-25
选择一个排序算法时,除算法的时空效率外,下列因素中,还需要考虑的是:
I、数据的规模
II、数据的存储方式
III、算法的稳定性
IV、数据的初始状态

A.仅 III
B.仅 I、II
C.仅 II、III、IV
D.I、II、III、IV

2-26
排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一“趟”。下列序列中,不可能是快速排序第二趟结果的是:

A.5, 2, 16, 12, 28, 60, 32, 72
B.2, 16, 5, 28, 12, 60, 32, 72
C.2, 12, 16, 5, 28, 32, 72, 60
D.5, 2, 12, 28, 16, 32, 72, 60

先找第一个中间元素,满足左边的比他小,右边比他大,第二趟就是看第一个元素分割的两半,再同样找是否在子序列中,有一个中间元素满足左边的都比他小,右边的比他大;

2-27
对大部分元素已有序的数组进行排序时,直接插入排序简单选择排序效率更高,其原因是:
(I). 直接插入排序过程中元素之间的比较次数更少
(II). 直接插入排序过程中所需要的辅助空间更少
(III). 直接插入排序过程中元素的移动次数更少

A.仅 I
B.仅 III
C.仅 I、II
D.I、II 和 III

课本P238:
(I).最好情况下,比较1次;
(II). 直接插入法只需要一个记录的辅助空间r[0],所以空间复杂度为O(1);
(III).最好情况下,不移动;
课本P247:简单选择排序:
(I).无论什么情况下,比较次数都为 n(n-1)/2;
(II). 只有在两个记录交换时需要一个辅助空间,所以空间复杂度为O(1);
(III).最好情况,不移动;
所以 (I). 对;(II). 一样,错;(III).一样,错;

猜你喜欢

转载自blog.csdn.net/Jessieeeeeee/article/details/107307114