排序算法1-冒泡排序

2021-04-16  本文已影响0人  小杰66

冒泡排序

算法步骤:
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

function bubbleSort(arr) {
  let len = arr.length;
  for (let i = 0; i < len - 1; i++) {
    for (let j = 0; j < len - 1 - i; j++) {
      if (arr[j] > arr[j + 1]) {
        let temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }
}

改进
优化1 优化外层循环当内层循环没有交换发生时说明已经排序完成
优化2 记录下内层最后一次交换的位置,因为在这之后没有发生交换说明后面已经排好序了

function bubbleSort(arr) {
  let len = arr.length;
  for (let i = 0; i < len - 1; i++) {
    let bool = true;
    let lastJ = 0;
    for (let j = 0; j < len - 1 - lastJ; j++) {
      if (arr[j] > arr[j + 1]) {
        let temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
        bool = false;
        lastJ = j;
      }
    }
    if (bool) return;
    console.log(arr);
  }
}

上一篇 下一篇

猜你喜欢

热点阅读