01_冒泡排序

冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端, 最终达到完全有序。

冒泡排序的平均时间复杂度为 O(n²) ,最坏时间复杂度为 O(n²) ,空间复杂度为 O(1) ,是稳定排序。

点击查看代码
// 方法一
function bubbleSort(arr) {
  if (!Array.isArray(arr) || arr.length <= 1) return arr;

  const length = arr.length - 1;
  for (let i = length; i >= 0; i--) {
    for (let j = 0; j < i; j++) {
      if (arr[j] > arr[j + 1]) {
        [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
      }
    }
  }

  return arr;
}

// 方法二
function bubbleSort(arr) {
  if (!Array.isArray(arr) || arr.length <= 1) return arr;

  let lastIndex = arr.length - 1;
  while (lastIndex > 0) {
    let flag = true,
      k = lastIndex;
    for (let i = 0; i < k; i++) {
      if (arr[i] > arr[i + 1]) {
        lastIndex = i;
        flag = false;
        [arr[i], arr[i + 1]] = [arr[i + 1], arr[i]];
      }
    }
    if (flag) break;
  }
  return arr;
}
Last Updated:
Contributors: hqchqc