1.在快速排序的一趟划分过程中,当遇到与基准数相等的元素时,如果左右指针都会停止移动,那么当所有元素都相等时,算法的时间复杂度是多少?(2分)
A O(logN)
B O(N)
C O(NlogN)
D O(N2)
解析:指针停止就会不断交换左右指针的元素,这样虽然多余的交换次数变多,但让子序列的元素相对平均,所以一共有logN次划分,每次时间复杂度是O(N)。
3-3
对长度为N且元素全部相等的数组执行排序,时间复杂度为Θ(N)的算法有哪些?
A.选择排序
B.冒泡排序
C.插入排序
D.合并排序
E.快速排序
F.堆排序
G.希尔排序
答案:BCF
3-4
对长度为N且元素全部相等的数组执行排序,时间复杂度为Θ(Nlog(N))的算法有哪些?
A.选择排序
B.冒泡排序
C.插入排序
D.合并排序
E.快速排序
F.堆排序
G.希尔排序。
答案:DG
3-5
对长度为N且元素全部相等的数组执行排序,时间复杂度为Θ(N^2)的算法有哪些?
A.选择排序
B.冒泡排序
C.插入排序
D.合并排序
E.快速排序
F.堆排序
G.希尔排序。
答案:AE
排序算法 平均时间复杂度
冒泡排序 O(n2)
选择排序 O(n2)
插入排序 O(n2)
希尔排序 O(n1.5)
快速排序 O(NlogN)
归并排序 O(NlogN)
堆排序 O(N*logN)
基数排序 O(d(n+r))
…