商务服务
【排序详解】冒泡、选择、插入
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/ , 查看更多   
最新文章
较强冷空气来袭 北京发布近十年来首个大风橙色预警
  中新社北京4月10日电 (记者 陈溯)记者10日从中国气象局获悉,11日至13日,较强冷空气将影响中国中东部地区,带来极端大风、
自拍神器怎么连接苹果6手机自拍神器连接手机「自拍神器怎么连接苹果6手机」
科学实践观创立者是马克思。马克思主义科学实践观的基本内容:一、实践的本质:实践是指人能动地改造客观世界的对象性活动,有两
猎豹浏览器电脑端 v8.0.0.22226猎豹浏览器手机版「猎豹浏览器电脑端 v8.0.0.22226」
猎豹浏览器电脑端是一款非常轻便好用的安全的浏览器,它占用的内存很少,是一个智能极速的浏览器,可以很好的优化后台的物理占用
经典qq斗地主旧版本apkqq斗地主手机版官方下载「经典qq斗地主旧版本apk」
在这个游戏中,玩家可以通过qq账号登录,与全国的玩家进行在线对战。游戏模式包含经典斗地主、抢地主、欢乐斗地主等多种模式,满
谷歌 53% 的 AI 投资砸向这个领域,正在悄悄重塑行业未来
作者|英贤  来源|IT桔子封面|公众号AI生成Alphabet(谷歌)作为互联网时代的科技巨头之一,在 AI 技术重塑世界的浪潮中勇立
阿根廷将获200亿美元贷款,助力经济增长
国际货币基金组织(IMF)本周二宣布,已同阿根廷达成技术协议,将提供为期48个月的200亿美元贷款。该组织通过一份公告表示,该协
红白机游戏合集手机版推荐 好玩的街机元素手游大全手机街机游戏「红白机游戏合集手机版推荐 好玩的街机元素手游大全」
八零九零这一代人的童年成长离不开红白机游戏,它们给我们的童年带来了美好的回忆。红白机复古的游戏画面和游戏框架简单而有趣,
轻松激活手机卡,六步搞定手机卡怎么激活「轻松激活手机卡,六步搞定」
在数字化时代,手机已成为我们生活中不可或缺的一部分。无论是学习、工作还是娱乐,手机都是连接世界的桥梁。然而,当我们拿到一
我用这个塞班模拟器,玩到了15年前的手机游戏诺基亚游戏手机「我用这个塞班模拟器,玩到了15年前的手机游戏」
说起诺基亚,大家印象最深的除了当年人手一部的盛况,应该还有它那比砖头还硬的手机外壳。相关的一些梗大家也应该听麻了,什么用
派对熊派对手机「派对熊」
派对熊是一款很优质的派对玩法手机软件,在这里有超多有趣的派对游戏,防止派对游戏尴尬,轻松在线进行查找,超多有趣的适合派对
相关文章

loading