首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
在待排序的元素序列基本有序的前提下,效率最高的排序方法是?
[单选题]
在待排序的元素序列基本有序的前提下,效率最高的排序方法是?
插入排序
选择排序
快速排序
归并排序
查看答案及解析
添加笔记
求解答(25)
邀请回答
收藏(187)
分享
纠错
9个回答
添加回答
1
张晨刚
A 插入排序如果基本排序好,最快只需要比较n-1次,效率最高
发表于 2015-02-07 22:54:55
回复(0)
2
小田向前冲
1,2,3,4,5基本有序。
插入排序需要比较1+2+3+4,n2级比较次数。
还是应该归并排序。
发表于 2016-08-09 09:24:35
回复(3)
10
爱豆儿
在本题考查各种排序方法,直接插入排序是将第i个元素插入到已经排序好的前i-1个元素中;选择排序是通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换,当i等于n时所有记录都已有序排列;快速排序是通过一趟排序将待排序的记录分割为独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后再分别对这两部分记录继续进行排序,以达到整个序列有序;归并排序是把一个有n个记录的无序文件看成由n个长度为1的有序子文件组成的文件,然后进行两两归并,得到[n/2]个长度为2或1的有序文件,再两两归并,如此重复,直至最后形成包含n个记录的有序文件为止。
通过上面的分析,可知,在待排序元素有序的情况下,直接插入排序不再需要进行比较,而其他三种算法还要分别进行比较,所以效率最高为直接插入排序。
发表于 2017-07-12 09:49:36
回复(0)
3
于仁杰cumt
答:是直接插入排序
这个题目实际上考的是最好情况下的时间复杂度哎!!
那就首先看归并排序吧。
归并排序是把一个有n个记录的无序文件看成由n个长度为1的有序子文件组成的文件,然后进行两两归并,得到[n/2]个长度为2或1的有序文件,再两两归并,如此重复,直至最后形成包含n个记录的有序文件为止。
时间复杂度与初始状态无关
也就是归并的最好最坏平均全都是 O(logn)
对于插入排序而言,每个元素相当于只比较一次,发生很少次数的移动。时间复杂度是O(n) 【平均与最差都是n方】
堆排序
时间复杂度是O(logn)最好最坏平均都是哎!!
因为有n-1 次向下调整过程。每次是O(h),所以时间复杂度为O(nlogn)
直接说快排采用分治法,最好与平均时间复杂度都为 O(nlogn)
综上所述,选直接插入排序
发表于 2019-12-06 19:00:57
回复(1)
2
L.K.
AB,插入排序和选择排序,和数组是否有序无关,都需要进行O(n
2
)比较。
C,数组基本排好序,每进行一次快排,可能将数组分为两部分,其中一部分为空,是最坏的情况,所以时间复杂度接近O(n
2
)。
D,归并排序和数组是否有序无关,都是O(nlgn)。
发表于 2015-07-28 12:21:03
回复(1)
1
Brohorizon
我答案是A诶 为什么评论一堆看不懂。。。
发表于 2018-07-24 23:05:57
回复(0)
0
反向平行排列
所谓容易插 和起的好
发表于 2018-11-20 16:07:15
回复(0)
0
和大胖一起越来越胖
感觉应该选d的呀
发表于 2017-06-07 15:04:01
回复(0)
0
Undertaker
试想一下数组[1,2,3,4,5],若是插入排序只需要4次比较,长度为n的数组,若是有序,插入排序时间复杂度为O(n)。但是仔细一看题目里说的“基本有序”,这个基本究竟是基本到什么地步呢? 数组[7,1,2,3,4,5] 只有元素(7)是无序的,其他元素都是有序的,然而这个时候插入排序就发现时间复杂度取决于无序元素的个数。所以A不能算是对,选D倒是挺合适的,因为归并排序的时间复杂度并不依赖这一点。
发表于 2016-01-27 12:15:54
回复(1)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
排序
上传者:
小小
难度:
9条回答
187收藏
33308浏览
热门推荐
相关试题
在下列表述中,错误的是()
字符串
树
排序
评论
(43)
吐泡泡
栈
评论
(1)
机器翻译
枚举
NOIP复赛
评论
(1)
素数判断
过关题目
语言题
评论
(1)
由关系 R 和 S 得到关系 T ...
爱奇艺
数据库
Java工程师
C++工程师
iOS工程师
安卓工程师
运维工程师
前端工程师
算法工程师
测试工程师
大数据开发工程师
2019
测试开发工程师
SQL
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题