商务服务
【排序详解】冒泡、选择、插入
2025-01-02 19:54

目录

一、冒泡排序

1、普通的冒泡

2、优化的冒泡

二、选择排序

1、普通的选择

2、优化的选择

三、插入排序

1、普通的插入

2、优化的插入


        此算法从小到大排序的基本原理是:每一趟排序讲待排续空间中每一个元素与后一个进行比较,若存在小于关系,则进行冒泡(交换,一趟排序下来以后,待排序空间中的最后一个元素最大。

        第 1趟排序时待排序下标空间为[0..N-1],从 a[o]到 a[N-1-1]依次与其后相邻元素比较,若大于,则交换。这样,第 1 趟排序之后,保证 [N-1]最小。

        第 k 趟排序时待排序下标空间为[0..N-k],从 a[o]到 [N-k-1]依次与其后相邻元素比较,若小于,则交换。这样,第 k 趟排序之后,保证 a[N-k]最小。采用此算法重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误,就把它们交换过来。
        借助从网上流传最广的图片理解。

最坏时间复杂度最优时间复杂度时间复杂度空间复杂度o(n^2)o(n^2)o(n^2)o(1)

1、普通的冒泡

 

2、优化的冒泡

 

        这个函数的区别在于上述函数添加了一个优化的标志位(flag)。这个标志位用于判断在一轮冒泡排序中是否发生了元素交换,即是否有逆序对存在。如果在某一轮排序中没有发生逆序对,说明数组已经是有序的,可以提前结束排序过程。

        这种优化可以有效减少排序的次数,当待排序的数组本身已经部分有序时,可以大幅度减少排序的时间复杂度。而第一个函数则是每一轮都需要进行完整的比较和交换操作,无论数组的有序程度如何。

        综上所述,第二个函数(添加了标志位的冒泡排序)相对于第一个函数(普通的冒泡排序)在某些情况下具有更好的性能和效率。

 

        这段代码实现的是一种改进的冒泡排序算法,其主要思想是同时从前往后和从后往前进行排序。这种改进的冒泡排序算法通过同时从两个方向进行排序,可以更快地将较大或较小的元素移动到正确的位置,从而提高排序效率。

        选择排序是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找最小(大)元素,将其放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。

1、普通的选择

 

2、优化的选择

 

        未优化的代码使用两层循环来实现选择排序。外层循环从索引0开始,依次遍历数组中的元素,内层循环从外层循环位置的下一个索引开始,找到未排序部分的最小元素,并将其索引赋值给变量min。然后,通过交换外层循环位置的元素和最小元素,将最小元素放置在已排序部分的末尾。这样,每一次外层循环结束时,已排序部分的长度会增加一个元素。

       优化的代码使用了双指针的方式来实现选择排序。它使用begin和end两个指针分别指向待排序部分的起始和结束位置。在每一轮迭代中,通过两个嵌套的循环分别找到未排序部分的最大元素和最小元素的索引,并将它们分别赋值给变量max和min。然后,通过交换起始位置的元素和最小元素,将最小元素放置在已排序部分的末尾;再次交换结束位置的元素和最大元素,将最大元素放置在已排序部分的开头。接着,更新begin和end指针,缩小待排序部分的范围。

这两段代码的核心思想相同,都是在每一轮迭代中选择未排序部分的最小(或最大)元素,并将其放置在已排序部分的末尾(或开头)。它们的时间复杂度都为O(n^2),其中n为数组的长度。不同之处在于具体实现方式和使用的变量名不同,但最终的排序结果是相同的。

        此算法从小到大排序的基本原理是:从第二个元素开始,将其视为已排序序列。将当前元素与已排序序列中的元素进行比较,找到合适的位置插入。插入操作涉及将较大元素向右移动,为新元素腾出空间,直到所有元素都被插入到正确的位置。

具体步骤如下

  1. 从第二个元素开始,将其保存在一个临时变量中。
  2. 向前遍历已排序序列,如果当前元素大于临时变量,将当前元素后移。
  3. 如果找到小于或等于临时变量的位置,将临时变量插入到该位置。
  4. 重复步骤 1 到 3,直到所有的元素都被插入到正确的位置。

   借助从网上流传最广的图片理解。

1、普通的插入

 

2、优化的插入

 

使用二分查找改进插入排序,使之最坏情况下时间复杂度为Θ(nlgn)。

此种方法实现了使用二分查找来确定插入元素的位置,从而优化插入排序的过程。具体分析如下

1.函数binarySearch():该函数用于确定元素key在已排序数组arr中应该插入的位置。它通过不断将待查找区间缩小为原来的一半来进行查找,直到最后low>high时停止,此时low即为要插入的位置。在每一次比较时,通过与中间元素比较来确定key所属的子区间。

2.函数binInsertSort():该函数实现了插入排序过程,对数组arr进行排序。在每一次迭代中,首先将待插入的元素key查找其应当插入的位置,然后再移动其他元素,将key插入到正确的位置上。

    以上就是本篇文章【【排序详解】冒泡、选择、插入】的全部内容了,欢迎阅览 ! 文章地址:http://keair.bhha.com.cn/news/5063.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 康宝晨移动站 http://keair.bhha.com.cn/mobile/ , 查看更多   
最新文章
首部法律LLM全景综述发布!双重视角分类法、技术进展与伦理治理
编辑:LRST【新智元导读】研究人员首次系统综述了大型语言模型(LLM)在法律领域的应用,提出创新的双重视角分类法,融合法律推
万亿产业即将起飞!国版星链能否赶超?| 产业链
最近有些消息,说下半年低轨卫星的发射即将加速。不管是政策层面还是资金层面,都有一些向好的变化。今天盘面上,西侧测试作为制
“布鞋首富”的身后事:娃哈哈案背后的法律暗礁与人性博弈
每一份看似固若金汤的财富版图,都可能因为一份被忽略的文件、一个被遗忘的名字,而在一夜之间分崩离析。这不是危言耸听,而是正
《恋人》要来了?集数从24集变更成14集,这部剧能播就是奇迹
娱乐圈又地震了!近日,赵露思突然现身微博喊话银河酷娱,与公司正面开撕。随后,关于她解约赔偿、被公司压榨、背刺等一系列消息
专为星粉打造 三星Galaxy Buds3 FE将高品质音频体验普惠更多消费者
2025年8月18日,三星电子宣布推出新款智能耳机三星GalaxyBuds3 FE,成为三星GalaxyBuds系列新成员。新品致力于以亲民价格提供高
女子买八元的蜜雪冰城喝出异物,老板:刚开始说喝出来一个籽,到工商局就说是老鼠屎
蜜雪冰城杭州拱墅区舟山东路59号店 老板:她也说她出车时间比较长,再一个她也是她们团队里收入最高的,这个东西确实也说过。但
腾讯云数据库AI服务首家通过信通院权威认证,用智能体打造数据库自治运维
Agent 正在深入企业核心场景,加速推动智能化运营。近日,中国信息通信研究院(信通院)公布了上半年“可信数据库”评估结果。腾
2025必看!3个高端普洱茶牌子解析指南,避坑省钱秘籍大!
遇到买错高端普洱茶?90%的人都做错了,
PayPal即将推出“加密支付”功能,支持商家接受100多种加密货币
财联社7月28日讯(编辑 牛占林)金融科技巨头将在不久后推出一项新的支付功能,允许商家在结账时接受超过一百种加密货币。美股周
锋线强援来了!特劳雷加盟北京女足
7月25日晚,北京京坛足球俱乐部在官方微信公众号宣布,马里前锋萨拉图·特劳雷加盟北京京坛东方雨虹女足。特劳雷出生于2002年9月