冒泡排序

40 阅读1分钟

实现原理

数组中有 n 个数,比较每相邻两个数,如果前者大于后者,就把两个数交换位置;这样一来,第一轮就可以选出一个最大的数放在最后面;那么经过 n-1(数组的 length - 1) 轮,就完成了所有数的排序。

4208590040-5ac42b210af83.webp

首先找到最大值 放最后,然后这样重复 arr.length - 1 次,便可以实现数组按从小到大的顺序排好了。为啥是arr.length - 1 次 因为最后一个值 已经在 n - 1 比较过了。

// 遍历数组,次数就是arr.length - 1
for (var i = 0; i < arr.length - 1; i++) {
    // 如果前一个数 大于 后一个数 就交换两数位置
    if (arr[i] > arr[i + 1]) {
        var temp = arr[i];
        arr[i] = arr[i + 1];
        arr[i + 1] = temp;
    }
}
console.log(arr)  // [3, 1, 2, 4]
    const arrLength = arr.length;
    for (let j = 0; j < arrLength-1; j++) {
      for (let i = 0; i < arrLength - 1 - j; i++) {
        if (arr[i] > arr[i + 1]) {
          let tem = arr[i];
          arr[i] = arr[i + 1];
          arr[i + 1] = tem;
        }
      }
    }
    return arr
  }