Skip to content

冒泡排序

遍历整个数组,将数组的每一项与其后一项进行对比,如果不符合要求就交换位置,一共遍历n轮,n为数组的长度

  • 外层循环控制排序轮数,内层循环控制比较; 每轮循环会把最大或者最小值排序好

  • 时间复杂度O(n^2) 空间复杂度O(n) 是否稳定:

js

function bubbleSort(arr) {
  let len = arr.length
  // 控制次数,每一轮都会排序好一个数字
  for(let i = 0; i < len; i++) {
    // -1: 控制边界; -i: 优化,不和尾部已排序好的作比较
    for(let j = 0; j < len - 1 - i; j++) {
      // 大于小于号控制升序还是降序
      if(arr[j] > arr[j+1]) {
        [arr[j], arr[j+1]] = [arr[j+1], arr[j]]
        // let temp = arr[j]
        // arr[j] = arr[j+1]
        // arr[j+1] = temp
      }
    }
  }
  return arr
}

let res = bubbleSort([4,2,3,6,7,1])
console.log(res)