美文网首页
排序算法1-冒泡排序

排序算法1-冒泡排序

作者: 小杰66 | 来源:发表于2021-04-16 07:55 被阅读0次

    冒泡排序

    • 平均时间复杂度:O(n^2)
    • 最好情况:O(n)
    • 最坏情况:O(n^2)
    • 空间复杂度:O(1)
    • 排序方式:In-place
    • 稳定性:稳定

    算法步骤:
    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);
      }
    }
    
    

    相关文章

      网友评论

          本文标题:排序算法1-冒泡排序

          本文链接:https://www.haomeiwen.com/subject/itkhlltx.html