1.设有100个元素的有序序列,如果用二分插入排序再插入一个元素,则最大比较次数是:(A)
A.7
B.10
C.25
D.50
解析:即折半查找的最大比较次数:floor(logn)+1。
2.对初始数据序列{ 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
解析:图示
3.在快速排序的一趟划分过程中,当遇到与基准数相等的元素时,如果左指针停止移动,而右指针在同样情况下却不停止移动,那么当所有元素都相等时,算法的时间复杂度是多少?(D)
A.O(logN)
B.O(N)
C.O(NlogN)
D.O(N2)
解析:这种情况下,枢轴每次最终都再最边界,此时退化为冒泡排序(树型变为单孩子树)。
4.对N个记录进行归并排序,归并趟数的数量级是:(A)
A.O(logN)
B.O(N)
C.O(NlogN)
D.O(N2)
5.对N个记录进行归并排序,空间复杂度为:(B)
A.O(logN)
B.O(N)
C.O(NlogN)
D.O(N2)
解析:区分4,5
6.对N个记录进行简单选择排序,比较次数和移动次数分别为O(N2)和O(N)。(T)
解析:通过选择排序的代码可以明显看出。
7.对于10个数的简单选择排序,最坏情况下需要交换元素的次数为:(A)
A.9
B.36
C.45
D.100
解析:由交换次数的时间复杂度是O(n)可得A
具体过程
8.排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一“趟”。下列序列中,不可能是快速排序第二趟结果的是:(D)
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
解析: