社区
C++ 语言
帖子详情
假如数组中大部分元素已经排好序,现在要对它们排序,哪种方法快?
menzi11
2014-05-25 09:27:10
假如数组中大部分元素已经排好序,现在要对它们排序,哪种方法快?
比如说有一个数组里共有一亿个元素,其中有10个元素顺序是乱的,
用什么方法排序比较快呢? 多谢!
...全文
840
6
打赏
收藏
假如数组中大部分元素已经排好序,现在要对它们排序,哪种方法快?
假如数组中大部分元素已经排好序,现在要对它们排序,哪种方法快? 比如说有一个数组里共有一亿个元素,其中有10个元素顺序是乱的, 用什么方法排序比较快呢? 多谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
helloworlddtczn
2014-05-26
打赏
举报
回复
插入排序,在大多数元素已经排好序的前提下 插入排序较快
threenewbee
2014-05-26
打赏
举报
回复
插入排序最快。 不过1亿整数更适合基数排序。
赵4老师
2014-05-26
打赏
举报
回复
引用 3 楼 ri_aje 的回复:
smoothsort
学习了!
ri_aje
2014-05-26
打赏
举报
回复
smoothsort
雨中的路
2014-05-25
打赏
举报
回复
引用自 http://www.cnblogs.com/ziyiFly/archive/2008/09/10/1288494.html 4、直接插入排序的效率分析 (1)时间复杂度 从时间分析,首先外层循环要进行n-1次插入,每次插入最少比较一次(正序),移动两次;最多比较i次,移动i+2次(逆序)(i=1,2,…,n-1)。若分别用Cmin ,Cmax 和Cave表示元素的总比较次数的最小值、最大值和平均值,用Mmin ,Mmax 和Mave表示元素的总移动次数的最小值、最大值和平均值,则上述直接插入算法对应的这些量为: Cmin=n-1 Mmin=2(n-1) Cmax=1+2+…+n-1=(n2-n)/2 Mmax=3+4+…+n+1=(n2+3n-4)/2 Cave=(n2+n-2)/4 Mmax=(n2+7n-8)/4 因此,直接插入排序的时间复杂度为O(n2)。 由上面对时间复杂度的分析可知,当待排序元素已从小到大排好序(正序)或接近排好序时,所用的比较次数和移动次数较少;当待排序元素已从大到小排好序(逆序)或接近排好序时,所用的比较次数和移动次数较多,所以插入排序更适合于原始数据基本有序(正序)的情况. 插入法虽然在最坏情况下复杂性为O(n2),但是对于小规模输入来说,插入排序法是一个快速的排序法。许多复杂的排序法,在规模较小的情况下,都使用插入排序法来进行排序,比如快速排序。
一起来玩玩呗
2014-05-25
打赏
举报
回复
插入排序
易语言地精
排序
地精
排序
是一种类似于插入
排序
的简单算法,通过交换
元素
来
排序
,适用于
大部分
元素
已有序的情况。该算法由Hamid Sarbazi-Azad于2000年提出,后由Dick Grune命名。地精
排序
在发现反序对时,会将其往回按直至
排好序
,再向前继续。其特点是一层循环,稳定且在部分
排序
情况下更高效。
快
排,归并
排序
,利用
快
排解决
数组中
的第K个最大
元素
本文深入讲解了归并
排序
和
快
速
排序
两种高效的
排序
算法,详细分析了它们的时间复杂度和空间需求,提供了完整的代码实现,并探讨了如何利用
快
速
排序
解决
数组中
寻找第K个最大
元素
的问题。
java:数组的冒泡和选择
排序
本文介绍数组
排序
中的选择
排序
和冒泡
排序
方法
。选择
排序
通过每轮选择最小
元素
并将其放置在正确位置实现
排序
;冒泡
排序
则通过两两比较
元素
,将较大
元素
逐步向后移动,直至整个数组有序。文章提供了详细的
排序
过程和代码示例。
8种对
快
速
排序
等算法的优化
本文详细讲解了冒泡
排序
的优化策略,包括标记法、双向冒泡和结合其他
排序
技巧的改进,同时介绍了选择
排序
、插入
排序
的优化
方法
,以及
快
速
排序
的随机化选择枢轴、三数取中和三路
快
排。讨论了如何处理重复
元素
和部分有序数据,以及优化后的性能提升。
八大
排序
方法
(二):桶
排序
、选择
排序
、插入
排序
、希尔
排序
本文详细介绍了桶
排序
、选择
排序
、插入
排序
和希尔
排序
四种
排序
算法的基本过程、时间复杂度、空间复杂度以及代码实现。桶
排序
通过将数据分到有限数量的桶里再分别
排序
,选择
排序
通过不断选择剩余
元素
中的最小者来实现
排序
,插入
排序
模拟扑克牌整理过程,而希尔
排序
则是对插入
排序
的改进,通过间隔分组来提高效率。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章