校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 数据结构 > 直接插入排序
题目

在待排序的元素序列基本有序的前提下,效率最高的排序方法是?

A.插入排序

B.选择排序

C.快速排序

D.归并排序

解答

正确答案是 A

在本题考查各种排序方法,直接插入排序是将第i个元素插入到已经排序好的前i-1个元素中;选择排序是通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换,当i等于n时所有记录都已有序排列;快速排序是通过一趟排序将待排序的记录分割为独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后再分别对这两部分记录继续进行排序,以达到整个序列有序;归并排序是把一个有n个记录的无序文件看成由n个长度为1的有序子文件组成的文件,然后进行两两归并,得到[n/2]个长度为2或1的有序文件,再两两归并,如此重复,直至最后形成包含n个记录的有序文件为止。 
通过上面的分析,可知,在待排序元素有序的情况下,直接插入排序不再需要进行比较,而其他三种算法还要分别进行比较,所以效率最高为直接插入排序。

C 5条回复 评论
越过山丘

非常详细, 非常清晰, 代码测试可用。 教科书级别

发表于 2022-07-16 21:00:00
0 0
大西

这个问题很常见

发表于 2022-05-24 22:00:00
0 0
资深90后

 AB,插入排序和选择排序,和数组是否有序无关,都需要进行O(n2)比较。

C,数组基本排好序,每进行一次快排,可能将数组分为两部分,其中一部分为空,是最坏的情况,所以时间复杂度接近O(n2)。

D,归并排序和数组是否有序无关,都是O(nlgn)。

发表于 2018-10-13 15:33:05
0 0
粽子

A 插入排序如果基本排序好,最快只需要比较n-1次,效率最高

发表于 2018-10-13 15:32:47
0 0
王王王

试想一下数组[1,2,3,4,5],若是插入排序只需要4次比较,长度为n的数组,若是有序,插入排序时间复杂度为O(n)。但是仔细一看题目里说的“基本有序”,这个基本究竟是基本到什么地步呢?    数组[7,1,2,3,4,5] 只有元素(7)是无序的,其他元素都是有序的,然而这个时候插入排序就发现时间复杂度取决于无序元素的个数。所以A不能算是对,选D倒是挺合适的,因为归并排序的时间复杂度并不依赖这一点。  

发表于 2018-10-13 15:32:36
0 0