社区
C++ 语言
帖子详情
假如数组中大部分元素已经排好序,现在要对它们排序,哪种方法快?
menzi11
2014-05-25 09:27:10
假如数组中大部分元素已经排好序,现在要对它们排序,哪种方法快?
比如说有一个数组里共有一亿个元素,其中有10个元素顺序是乱的,
用什么方法排序比较快呢? 多谢!
...全文
776
6
打赏
收藏
假如数组中大部分元素已经排好序,现在要对它们排序,哪种方法快?
假如数组中大部分元素已经排好序,现在要对它们排序,哪种方法快? 比如说有一个数组里共有一亿个元素,其中有10个元素顺序是乱的, 用什么方法排序比较快呢? 多谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
插入排序
数组
排序
算法大比拼:
快
排、归并、冒泡哪个更
快
?
在计算机科学中,
排序
算法一直是一个热门话题,因为
排序
是数据处理中最基本的任务。在实际应用中,无论是数据库还是Web应用程序,
排序
任务都是必备的。因此,选择适当的
排序
算法是非常重要的。常见的
排序
算法有
快
速
排序
、归并
排序
、冒泡
排序
、选择
排序
等。本篇文章将重点讨论
快
速
排序
、归并
排序
和冒泡
排序
这三种算法,分析它们的优缺点、应用场景和性能表现,为读者提供一个全面的
排序
算法比较。本文对
快
速
排序
、归并
排序
和冒泡
排序
三种算法进行了比较。从算法原理、时间复杂度、空间复杂度、优缺点以及适用场景等方面进行了分析和比较。
快
排查找
数组中
的第K个最大
元素
冒泡
排序
、插入
排序
、选择
排序
时间复杂度都是O(n2),适合小规模数据
排序
。 两种时间复杂度为O(nlogn)的
排序
算法,归并
排序
和
快
速
排序
。这两种
排序
算法适合大规模数据
排序
,更常用。 归并
排序
和
快
速
排序
都用到了分治思想。 归并
排序
要
排序
一个数组,先把数组从中间分成前后两部分,然后对前后两部分分别
排序
,再将
排好序
的两部分合并,整个数组就有序了。 使用的分治思想,跟递归思想很像。 因为分治算法一般都是用递归实现: 分治是一种解决问题的处理思想 递归是一种编程技巧 二者不冲突。 写递归代码的技巧就是,分析
介绍一种常用的数组
元素
排序
方法
——冒泡
排序
冒泡
排序
介绍: 为什么冒泡
排序
叫做冒泡
排序
呢? 相信大家一开始都有这个疑问,在冒泡
排序
的过程中不断地比较
数组中
相邻的两个
元素
,较小者向上浮,较大者下沉,整个过程和水中气泡上升的原理相似,故叫冒泡
排序
。 冒泡
排序
的过程: 第1步,从第一个
元素
开始,将相邻的两个
元素
依次进行比较,直到最后两个
元素
完成比较。如果前一个
元素
比后一个
元素
大,则交换它们的位置。整个过程完成后,
数组中
最后一个
元素
自然就是最大值,这样也就完成了第一轮比较。 第2步,除了最后一个
元素
,将剩余的
元素
继续进行两两比较,过程与第一步相似, 这样就
排序
算法--两个数组
元素
之间关系(两个数组交集,分发饼干)
排序
算法–两个数组交集 归并
排序
:其原理就相当于把数组分成左右两等份数组,让数组左右两边先各自
排好序
,然后再让数组整体有序。 文章:八大
排序
算法 在一部分的
排序
算法中求两数组
元素
的关系中都会用到归并
排序
算法的原理思想。 题目一 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个
元素
一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 思路:运用归并
排序
中不同
数组中
的双指针思想,首先把要求交集的两个数组进行
排序
,然后创建两个双指针变量,运用双指针来对两
数组中
的
元素
一一比较。
java 中数组常用
排序
方法
举例说明
在Java中,数组的
排序
是常见的操作之一,而Java提供了多种
排序
方法
来满足不同场景的需求。它通过构建有序序列,对于未
排序
数据,在已
排序
序列中从后向前扫描,找到相应位置并插入。
快
速
排序
是一种高效的
排序
算法,基于分治法。归并
排序
是一种稳定且高效的
排序
算法,它将数组分为两半,分别
排序
,然后将两个有序的子数组合并成一个有序数组。它每次从待
排序
的数据中选择最小(或最大)的
元素
,放到已
排序
序列的末尾。冒泡
排序
是一种简单的
排序
算法,它重复地遍历数组,比较相邻的
元素
,并交换它们的位置,直到整个数组有序。
C++ 语言
65,189
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章