1、仅基于比较的算法能得到的最好的“最坏时间复杂度”是 O(NlogN)。 (T)
解析:
下界
所谓“下界”, 顾名思义就是对于一个长度为n的序列所需要的最少比较次数。
最优下界
什么时候最优?决策树从根节点到叶节点的最短长度为n-1,既长度为n的序列本身就是有序(序列从左到右,以升序表示为有序)时就是最优情况,冒泡排序和直接插入法在最优情况下时间复杂度就是o(n)。
最坏下界
什么时候最坏?决策树从根节点到叶节点的长度为log(n!),既从根节点至少需要log(n!)次比较才能到叶节点。当n很大时根据斯特林公式log(n!)=nlogn,既最坏情况下时间复杂度下界为O(nlogn)。
2、对 N 个记录进行简单选择排序,比较次数和移动次数分别为 O( N 2 N^2 N2)和 O(N)。(T)
解析:
比较次数= n − 1 + n − 2 + n − 3 + ⋯ + 1 = ( n − 1 + 1 ) ( n − 1 ) / 2 = n ( n − 1 ) / 2 n-1+n-2+n-3+\dots+1=(n-1+1)(n-1)/2=n(n-1)/2 n−1+n−2+n−3+⋯+1=(n−1+1)(n−1)/2=n(n−1)/2
移动次数=n;
3、对 N 个不同的数据采用冒泡排序进行从大到小的排序,当元素基本有序时交换元素次数肯定最多。 (F)
解析:
元素基本有序时不交换;
冒泡排序:
原理:比较两个相邻的元素,将值大的元素交换到左边
思路:
冒泡排序
4、对 N 个记录进行堆排序,需要的额外空间为 O(N)。(F)
解析:
堆排序不需要额外空间,只通过位置交换进行排序,额外空间为 O(1);
5、希尔排序是稳定的算法。(F)
解析:
希尔排序是不稳定的算法;
6、要从 50 个键值中找出最大的 3 个值,选择排序比堆排序快。 (T)
解析:
规模较小直接选择排序快;
7、对 N 个记录进行快速排序,在最坏的情况下,其时间复杂度是 O(NlogN)。(F)
解析:
8、直接插入排序算法在最好情况下的时间复杂度为 O(n)。 (T)
1、若数据元素序列{ 12, 13, 8, 11, 5, 16, 2, 9 }是采用下列排序方法之一得到的第一趟排序后的结果,则该排序算法只能是: (D)
A. 快速排序
B. 选择排序
C. 堆排序
D. 归并排序
解析:
排除选择排序,因为选择排序后,最前面一定是最小的或最大的;
排除快速排序,因为快速排序一次后,有两个值相同,有一个数存放在临时变量;
*排除堆*排序
一次排序后建堆
由图可看出不符合堆;
归并排序 12 13 | 8 11 | 5 16 | 2 9 符合;
2、在内部排序时,若选择了归并排序而没有选择插入排序,则可能的理由是:(B)
解析:
3、对初始状态为递增序列的表按递增顺序排序,最费时间的是()算法。 (A)
A. 快速排序
B. 归并排序
C. 插入排序
D. 堆排序
解析:
堆排序:最好最坏都是nlogn;
快排:最好情况一趟比较可以划分两等份nlogn 最坏相对有序n*n;
插入:最好相对有序n;
归并:最好最坏都是nlogn;
4、就平均性能而言,目前最好的内排序方法是(C)排序法。 (3 分)
A. 希尔
B. 冒泡
C. 快速
D. 交换
解析:
经过实验,会发现相同的数据规模,快速排序比堆排序的效率高很多,并且随着数据规模的扩大,二者的差距不断扩大,快速排序的优势越来越明显。快速排序的时间复杂度近似线性增长,堆排序则要大很多。究其原因,应该有以下几个方面:
为什么说快速排序是性能最好的排序算法?
5、对序列{15,9,7,8,20,-1,4,} 用希尔排序方法排序,经一趟后序列变为{15,-l,4, 8,20,9,7}则该次采用的增量是(C)。
A. 2
B. 1
C. 4
D. 3
解析:
9和-1替换,7和4替换,增量为4;
6、下列排序算法中,哪种算法可能出现:在最后一趟开始之前,所有的元素都不在其最终的位置上?(设待排元素个数 N>2) (B)
A. 冒泡排序
B. 插入排序
C. 堆排序
D. 快速排序
解析:
插入排序中, 如果最后一个数最小, 前面所有的数字都要移动位置;
7、对于 7 个数进行冒泡排序,需要进行的比较次数为: (C )
A. 7
B. 14
C. 21
D. 49
解析:
6+5+4+3+2+1=21;
8、排序方法中,从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置的方法称为: (A)
A. 插入排序
B. 选择排序
C. 快速排序
D. 归并排序
解析:
插入排序
9、对于 10 个数的简单选择排序,最坏情况下需要交换元素的次数为: (A)
A. 9
B. 36
C. 45
D. 100
解析:
对于简单选择排序,无论最好最坏都要交换N-1次;
11、对序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数据的排列变为{4,9,-1,8,20, 7,15},则用的是(B)排序法。 (3 分)
A. 快速
B. 希尔
C. 冒泡
D. 选择
解析:
增量为3的希尔排序;
12、对初始数据序列{ 8, 3, 9, 11, 2, 1, 4, 7, 5, 10, 6 }进行希尔排序。若第一趟排序结果为( 1, 3, 7, 5, 2, 6, 4, 9, 11, 10, 8 ),第二趟排序结果为( 1, 2, 6, 4, 3, 7, 5, 8, 11, 10, 9 ),则两趟排序采用的增量(间隔)依次是: (D)
A. 3, 1
B. 3, 2
C. 5, 2
D. 5, 3
12、数据序列{ 3, 1, 4, 11, 9, 16, 7, 28 }只能是下列哪种排序算法的两趟排序结果?(B)
A. 冒泡排序
B. 快速排序
C. 插入排序
D. 堆排序
13、若用冒泡排序法对序列{10,14,26,29,41,52}从大到小排序,需进行()次比较。 (C )
A. 25
B. 3
C. 15
D. 10
解析:
5+4+3+2+1=15;
n(n-1)/2;//n为序列个数;
14、O(nlogn) 快速对于快速排序,当待排记录有序时,每回划分均以第一个元素作为枢轴,如下说法正确的
是: (C )
A. 适用于顺序存储结构,算法时间复杂度时 O(N)
B. 适用于链式存储结构,算法时间复杂度时 O(N)
C. 适用于顺序存储结构,算法时间复杂度时 O(N^2)
D. 适用于链式存储结构,算法时间复杂度时 O(N^2)
解析:
适用于顺序存储结构,有序时最坏,时间复杂度时 O(N^2);
14、O(nlogn) 快速对于快速排序,当待排记录有序时,每回划分均以第一个元素作为枢轴,如下说法正确的
是: (C )
A. 适用于顺序存储结构,算法时间复杂度时 O(N)
B. 适用于链式存储结构,算法时间复杂度时 O(N)
C. 适用于顺序存储结构,算法时间复杂度时 O(N^2)
D. 适用于链式存储结构,算法时间复杂度时 O(N^2)
解析:
适用于顺序存储结构,有序时最坏,时间复杂度时 O(N^2);
1、基于比较的排序方法,其最好的时间复杂度为 ( n l o g 2 n nlog_2n nlog2n)。
2、时间复杂度为 O(nlogn)的排序算法有归并排序、堆排序和 (快速)排序。