toFrankie / blog

种一棵树,最好的时间是十年前。其次,是现在。
20 stars 1 forks source link

JavaScript 之冒泡排序 #210

Open toFrankie opened 1 year ago

toFrankie commented 1 year ago

冒泡排序,是一个相对较为简单易于理解的排序算法。下面以升序为例。

原理

图示

冒泡排序

实现

// 冒泡排序(升序)
function bubbleSort(arr) {
  for (let i = 0; i < arr.length - 1; i++) {
    for (let j = 0; j < arr.length - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        ;[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
      }
    }
  }
  return arr
}

const array = [8, 12, 4, 0, 22, 8, 21, 3, 56]
console.log(bubbleSort(array)) // [0, 3, 4, 8, 8, 12, 21, 22, 56]

时间复杂度

可知冒泡排序执行次数是 (n-1) + (n-2) + ... + 2 + 1 = (n^2 - n)/2,根据时间复杂度推导方式,可得到 O(n^2)