什么是冒泡排序

菜园前端
• 阅读 348

原文链接:https://note.noxussj.top/?source=helloworld


什么是冒泡排序(bubbleSort)?

冒泡排序是所有排序算法中最简单的一种,当然也是性能最差的一种。冒泡排序的思想其实很简单,就如它的名字一样在水中 "冒泡"。水中有很多散乱的小气泡,然后一个个气泡往水面上冒出。

例如一组无序的数组,最左边就是水底,最右边就是水面,最左边的元素不断的跟右边的元素比较,最后交换位置到最右边。

算法步骤

  1. 冒泡排序会比较所有相邻的元素
  2. 从第一个数开始,每两个相邻的数进行比较
  3. 这两个相邻的数比较完后,按照小的放在左边,大的放在右边的想法,交换它们的位置
  4. 执行完一轮后,大的数就会被排到最右边
  5. 反反复复重复 n - 1 遍后,整个排序就完成了

动画演示链接

https://visualgo.net/zh/sorting

什么是冒泡排序

基础案例

  • 时间复杂度:O (n ^ 2)
  • 空间复杂度:O (1)
Array.prototype.bubbleSort = function () {
    for (let i = 0; i < this.length - 1; i++) {
        for (let j = 0; j < this.length - 1 - i; j++) {
            if (this[j] > this[j + 1]) {
                const temp = this[j]
                this[j] = this[j + 1]
                this[j + 1] = temp
            }
        }
    }
}

const arr = [5, 4, 3, 2, 1]

arr.bubbleSort() // [1, 2, 3, 4, 5]

代码中存在两个嵌套循环,所以时间复杂度是 O (n ^ 2),而空间复杂度是 O (1),因为没有使用会随着数据增大而增大的变量。

点赞
收藏
评论区
推荐文章
22 22
3年前
【排序算法动画解】排序介绍及冒泡排序
本文为系列专题的第12篇文章。1.2.3.4.5.6.7.8.9.10.11.本文先简单介绍一下什么是排序,然后再结合动画介绍暴力排序和冒泡排序。1.什么是排序?排序在日常生活中无处不在。比如考试成绩的排名、体育课的从低到高的队形、网购时按价格升序排列或降序排列等等。|姓名|学号|班级|成绩|||||
最新美团点评Java团队面试题,感悟分享
1.笔试常见的问题?面试常见的问题上面给的面试题链接基本都有。我只提几点:1.写SQL:写SQL很常考察groupby、内连接和外连接。2.手写代码:手写代码一般考单例、排序、线程、消费者生产者。我建议排序算法除了冒泡排序,最好还能手写一种其他的排序代码。试想:如果一般面试者都写的冒泡排序,而你写的是快速排序/堆排序,肯定能给面试官留下不错的印象。
西八老码 西八老码
3年前
今天就来花一点时间整理一下算法吧!
算法,就是计算机处理信息的一个步骤。是独立存在的一种处理问题的方法和思想,并不局限于具体的实现过程。排序冒泡cpublicstaticintBubbleSort(intarr)for(inti0;i<arr.length;i)for(intj0;j<a
22 22
3年前
【排序算法动画解】简单选择排序
本文为系列专题的第13篇文章。1.2.3.4.5.6.7.8.9.10.11.12.在文章【】中,我们介绍了暴力排序和冒泡排序这两种排序算法,算是一个引子。同时指出暴力排序和冒泡排序的缺点硬伤。本文介绍的简单选择排序则“医治”了上面提到的暴力排序和冒泡排序的“硬伤”。核心思想:从数组的第一个元素开始,将其作为基准元素,然后找出基准
Wesley13 Wesley13
3年前
java中几种排序的实现
1.最简单的冒泡排序/\\\冒泡排序\/publicstaticvoidbubbleSort(){int\\arr{5,8,1,2,9,8,7,4};System.out.println("排序前的数组为:");for(intnum:arr){System.o
九路 九路
4年前
Java实现排序算法
//冒泡排序publicstaticvoidbubbleSort(intdata){intndata.length;for(inti0;i<n;i){for(intj0;j<n;j){if(
Wesley13 Wesley13
3年前
JAVA 中数组的几种排序方法
1、数组的冒泡排序publicvoidbubbleSort(inta){intna.length;for(inti0;i<n1;i){for(intj0;j<n1;j)
Wesley13 Wesley13
3年前
PHP算法:冒泡排序与快速排序
写一个排序算法,可以是冒泡排序或者快速排序,假设待排序对象是一个二维数组。(提示:不能使用系统已有函数,另外请仔细回忆以前学习过的基础知识)//冒泡排序<brfunctionbubble_sort($array)
{
&nbsp;&nbsp;<br$countcount($array);
&nbsp;&nb
Stella981 Stella981
3年前
JavaScript常用基础算法
基础算法一、排序1.冒泡排序//冒泡排序functionbubbleSort(arr){for(vari1,lenarr.length;i<len1;i){for(varj0;j<
Stella981 Stella981
3年前
Lua 排序算法
冒泡排序(BubbleSort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。算法步骤1.有一个长度为n