算法-冒泡排序

实现原理: 双层循环比较两个记录键值的大小, 如果这两个记录键值的大小出现逆序, 则交换这两个记录键值

点击查看代码












 














/**
 * 冒泡排序
 * @param {number[]} arr 
 * @returns number[]
 */
const bubbleSort = (arr) => {
  if (arr.length <= 1) return arr
  // console.time('--bubble sort--')
  for(let i = 0, len = arr.length - 1; i < len; i++) {
    let hasChange = false
    for(let j = 0; j < len; j++) {
      if (arr[j] > [arr[j + 1]]) {
        [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
        hasChange = true
      }
    }
    // 如果为 false, 表示所有元素都到位
    if (!hasChange) break
  }
  // console.timeEnd('--bubble sort--')
  return arr
}

// ---------- Test ---------
console.log(bubbleSort([1, 3, 6, 8, 0, 9, 4]))
// [0, 1, 3, 4, 6, 8, 9]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26