排序算法之冒泡排序(详细版)

这篇具有很好参考价值的文章主要介绍了排序算法之冒泡排序(详细版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

📝个人主页:爱吃炫迈
💌系列专栏:数据结构与算法
🧑‍💻座右铭:快给我点赞赞💗


冒泡排序是什么

冒泡排序(Bubble Sort)***,是一种计算机科学领域的较简单的排序算法。

  • 重复地走访过要排序的元素列表,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

  • 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”

💯只说可能有点不好理解,所以我们上动图,更形象的演示冒泡排序规则(向了解的更细致请往下看!)

排序算法之冒泡排序(详细版)


算法原理

冒泡排序算法的原理如下:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数
  3. 针对所有的元素重复以上的步骤,除了最后一个
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

算法实现

🌰🌰举个栗子:用冒泡排序算法实现数组a = [2,3,1]的升序排序

排序算法之冒泡排序(详细版)

🥇开始排序(比赛开始咯~):

  1. a[0]和a[1]进行比大小,结果2<3,所以不进行交换

排序算法之冒泡排序(详细版)

  1. a[1]和a[2]进行比大小,结果3<1,进行交换

排序算法之冒泡排序(详细版)

  1. 经过两次比较后,最大值3已经成功冒泡到最后~~🎉🎉🎉不用在参与后续的排序啦🎉🎉🎉

排序算法之冒泡排序(详细版)

🥇第一轮比赛结束!下面进行第二轮!

  1. a[0]和a[1]进行比大小,结果2>1,进行交换

排序算法之冒泡排序(详细版)

  1. 经过一次比较后,2也成功冒泡,🎉🎉🎉也不用参与后续的比较了!🎉🎉🎉

排序算法之冒泡排序(详细版)

🥇此时就剩1了,没有人在和它进行比较了,比赛结束!

总结:3个数进行比较时,我们进行了2趟排序(即2轮比赛):

第1趟排序,我们进行了2次比较

第2趟排序,我们进行了1次比较

推理n个数进行比较时,我们进行了(n-1)趟排序(即(n-1)轮比赛)因为最后总是剩下一个数不需要在进行一趟排序(冒泡)

第1趟排序,我们进行了(n-1)次比较

第2趟排序,我们进行了(n-1) -1次比较因为第一趟后选出的最大值不在参与排序,所以第二趟只剩n-1个数参与排序,而n-1个数需要进行(n-1)-1次比较

第3趟排序,我们进行了(n-2)-1次比较

·····

i趟排序,我们进行了(n-i)次比较 因为(n-(i-1))-1=n-i

结论

  1. n个数进行比较时,我们进行了(n-1)趟排序
  2. 第i趟排序,我们进行了(n-i)次比较

💫所以现在我们可以明明白白,清清楚楚(···没词儿了···)的写出代码啦:

 function bubbleSort(arr) {
  var i, j;
  //定义一个临时变量,用于交换时存放数据
  var tempExchangVal;
 // 外层循环表示冒泡排序的趟数
 // 内层循环表示每趟排序比较的次数
  for (i = 0; i < arr.length - 1; i++) {
    for (j = 0; j < arr.length - 1 - i; j++) {
    //交换相邻的两个顺序错误的数字
      if (arr[j] > arr[j + 1]) {
        tempExchangVal = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = tempExchangVal;
      }
    }
  }
  return arr;
}
 var arr = [2, 3, 1];
 var arrSorted = bubbleSort(arr);
 console.log(arrSorted); 🎉//输出1,2,3🎉

💗总结💗

你以为到这里就结束了吗,nonono,后续我还会补充有关冒泡排序的例题,敬请期待吧~~
最后希望我的这篇文章对你学习冒泡排序有所帮助,有问题欢迎在评论区提出!文章来源地址https://www.toymoban.com/news/detail-426328.html

到了这里,关于排序算法之冒泡排序(详细版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 排序算法大全:冒泡排序【含优化】,选择排序【含优化】,直接插入排序,希尔排序,堆排序,快速排序【含3种实现版本及非递归实现】,归并排序【含非递归实现】。详细图解,文字解释,代码实现,性能分析。

    目录  一、冒泡排序 1、冒泡排序思想 2、冒泡排序算法的性能分析 二、选择排序 1、选择排序思想 2、选择排序算法的性能分析   三、直接插入排序 1、直接插入排序思想 2、直接插入排序算法的性能分析 四、希尔排序 1、希尔排序思想 2、希尔排序算法的性能分析 五、堆排

    2024年02月20日
    浏览(58)
  • 【数据结构与算法】排序算法:冒泡排序,冒泡排序优化,选择排序、选择排序优化

    目录 一、冒泡排序 1、冒泡排序思想 2、冒泡排序算法的性能分析 代码实现: 二、选择排序 1、选择排序思想 2、选择排序算法的性能分析  代码实现: 1、冒泡排序思想 冒泡排序的基本思想是通过相邻元素之间的比较和交换来逐步将最大(或最小)的元素移到右边(或左边

    2024年01月19日
    浏览(50)
  • C++常见排序算法——冒泡排序算法

    首先说一下冒泡排序的基本算法思想: 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸

    2023年04月08日
    浏览(42)
  • 排序算法之二:冒泡排序

    冒泡排序是交换排序 基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。 第一趟:将最大的值排到最后 第二趟:将次大的值排到倒

    2024年02月04日
    浏览(37)
  • 排序:冒泡排序算法分析

    基于“交换”的排序︰ 根据序列中两个元素的比较结果来对换这两个记录在序列中的位置。 交换排序包括 冒泡排序 和 快速排序 。 1.算法原理 从后往前(或从前往后)两两比较相邻元素的值, 若为逆序(即 A [ i − 1 ] A [ i ] A[i-1]A[i] A [ i − 1 ] A [ i ] ) ,则交换它们,直到

    2024年02月07日
    浏览(39)
  • 排序算法(1):冒泡排序

    (꒪ꇴ꒪ ),Hello我是 祐言QAQ 我的博客主页:C/C++语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍 快上🚘,一起学习,让我们成为一个强大的攻城狮! 送给自己和读者的一句鸡汤🤔: 集中起来的意志可以击穿顽石! 作者水平很有限,如果发现错误,请在评论区指

    2024年02月12日
    浏览(38)
  • 排序算法:冒泡排序

    冒泡排序是入门级的算法,但也有一些有趣的玩法。通常来说,冒泡排序有三种写法: 一边比较一边向后两两交换,将最大值 / 最小值冒泡到最后一位; 经过优化的写法:使用一个变量记录当前轮次的比较是否发生过交换,如果没有发生交换表示已经有序,不再继续排序;

    2024年02月11日
    浏览(47)
  • 排序算法之详解冒泡排序

    冒泡排序顾名思义,就是像冒泡一样,泡泡在水里慢慢升上来,由小变大。 虽然冒泡排序和冒泡并不完全一样,但却可以帮助我们理解冒泡排序。 一组无序的数组,要求我们从小到大排列 我们可以先将最大的元素放在数组末尾 再将第二大的数放在数组的倒数第二个位置 再

    2023年04月25日
    浏览(89)
  • 常见排序算法之冒泡排序

    顾得泉: 个人主页 个人专栏: 《Linux操作系统》  《C/C++》  《LeedCode刷题》 键盘敲烂,年薪百万!         冒泡排序,英文名Bubble Sort,是一种相对基础的 交换排序 方法。这种排序算法的名字来源于它操作的过程,可以类比为数列中的每一个元素都可以像小气泡一样

    2024年02月05日
    浏览(44)
  • 排序算法之冒泡排序(图解)

    冒泡排序 (英语: Bubble Sort )又称为 泡式排序 ,是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是

    2023年04月19日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包