校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 数据结构 > 时间、空间复杂度
题目

设被排序的结点序列共有N个结点,在该序列中的结点已十分接近排序的情况下,用直接插入法,归并法和一般的快速排序法对其排序,这些算法的时间复杂性为()

A.O(N),O(N),O(N)

B.O(N),O(N*log2N),O(N*log2N)

C.O(N),O(N*log2N),O(N2)

D.O(N2),O(N*log2N),O(N2)

解答

正确答案是 C

直接插入法,最好的情况时间复杂度为O(n), 最坏的情况为O(n^2) , 其中最好的情况是指基本有序
归并排序,最好最坏的情况时间复杂度都为O(nlogn)
快速排序,最好的情况下时间复杂度为O(nlogn),最坏的情况下为O(n^2),  其中最坏的情况是指枢纽元素太大或者太小,造成比较后,被比较的元素都在一侧,最好的情况是枢纽元素在所有元素中适中

C 5条回复 评论
已註銷

老师讲得好好啊,谢谢老师

发表于 2021-09-13 16:10:00
0 0
改造家

最好情况下插入排序是O(n),归并排序最差和最好都是O(nlogn),快速排序最好是对随机序列排序,复杂度为O(nlogn),基本有序的时间复杂度为O(n^2)。因此,推荐对长随机序列在早中期应用快速排序,后期使用插入/冒泡/选择/计数等排序。  

发表于 2018-10-13 15:25:59
0 0
落地成盒

C,归并排序时间复杂度在最好,平均,最差都一样,而插入当有序时是O(n)的复杂度

发表于 2018-10-13 15:25:47
0 0
咸鱼王

题目中说明是数据接近有序的情况,就是快排的最坏情况下
快排的最好情况是数据随机,数据量微小的情况

发表于 2018-10-13 15:25:36
0 0
资深90后

当待排序的序列为正序或者逆序时,对于快速排序来说,此时选取的枢轴偏大或偏小。即最坏的情况。

发表于 2018-10-13 15:25:22
0 0