[路飞]_冒泡排序(BubbleSort)

682 阅读1分钟

冒泡排序简介

算法如其名,就是让较小的元素像气泡一样向上浮,慢慢的冒出来。最终实现较小的元素在前,较大的元素在后。

冒泡排序的算法思想

循环数组中每个元素,依次比较当前元素与下一个元素,如果顺序错误(正序或倒序)就交换,直到没有元素交换,则完成当前元素的比较。

若对n个元素进行比较,一共需要n-1次比较,当进行到第k次比较则需进行n-k次比较。因此总的比较次数为:(n-1)+(n-2)+...+1 = n*(n-1)/2,时间复杂度为O(n^2)

冒泡排序图解

图片来自 https://www.itcast.cn/news/20191120/14135329023.shtml

执行算法前

20191120140802787.jpg

执行算法后

20191120140844584.jpg

执行过程

20191120141001101.gif

代码实现(JS)

var arr = [3, 43, 38, 5, 47, 15, 36, 26, 27, 2, 44, 4, 50, 19, 38]

function BubbleSort(arr) {
  var n = arr.length
  for (var i = 0; i < n; i++) {
    for (var j = 0; j < n - i - 1; j++) {
      if (arr[j + 1] < arr[j]) {
        [arr[j + 1], arr[j]] = [arr[j], arr[j + 1]]
      }
    }
  }
}

BubbleSort(arr)

console.log(arr) // [2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 38, 43, 44, 47, 50]

经典排序算法-冒泡排序(Javascript) 文章最后有我录的B站视频欢迎一键三连