商务服务
【排序详解】冒泡、选择、插入
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/ , 查看更多   
最新文章
苹果手机关闭同步(苹果手机关闭同步照片会怎么样)
  苹果手机关闭同步:保护你的隐私和数据安全  随着科技的发展,智能手机成为我们日常生活中不可或缺的一部分。苹果手机因其
苹果手机怎么设置双屏(苹果手机怎么设置双屏隐藏功能)
  苹果手机设置双屏:操作指南  苹果手机一直以来都是科技前沿的代名词,其强大的功能及人性化的设计吸引了众多用户。其中,
迅雷手机(迅雷手机版)
  迅雷手机——数字化时代的移动利器  随着科技的飞速发展,移动互联网已经渗透到我们生活的方方面面。在这样的背景下,迅雷
电信办宽带送手机(电信办宽带送手机活动)
  《电信办宽带送手机:双赢的营销策略》  随着科技的飞速发展和数字化时代的到来,互联网已经成为人们生活中不可或缺的一部
苹果手机铃声不响(苹果手机铃声不响怎么解决)
  苹果手机铃声不响:问题解析与解决方案  苹果手机作为全球最受欢迎的智能手机之一,其性能和用户体验一直备受赞誉。然而,
苹果手机如何设置来电(苹果手机如何设置来电闪光灯)
  苹果手机如何设置来电  苹果手机作为全球最受欢迎的智能手机之一,其操作系统简单易用,功能丰富多样。本文将详细介绍如何
苹果手机电池耐用吗(苹果手机电池耐用吗一般可以用几年)
  苹果手机电池耐用吗?  随着智能手机的普及,电池寿命已成为消费者购买手机时的重要考虑因素之一。苹果手机作为市场上的领
手机怎么显示隐藏文件(手机怎样显示隐藏文件夹)
  关于《手机怎么显示隐藏文件》的文章  随着科技的发展,手机已经成为我们日常生活中不可或缺的一部分。无论是存储照片、视
苹果手机最多能用几年(一般来说苹果手机可以用几年)
  苹果手机最多能用几年  苹果手机一直以来都是智能手机市场的领导者之一,其产品的质量和性能都得到了广大用户的认可。那么
联通手机上网(联通手机上网费可以关闭吗)
  联通手机上网:连接世界的无缝体验  随着科技的飞速发展,手机上网已经成为我们日常生活中不可或缺的一部分。作为中国三大
相关文章