美文网首页
经典排序算法系列1-冒泡排序

经典排序算法系列1-冒泡排序

作者: xgangzai | 来源:发表于2019-11-22 10:28 被阅读0次

Bubble Sort-冒泡排序

需求

对N个整数升序排序

思路

进行N轮排序,每一轮选出最大的元素,在每轮对比中,相邻元素比较,如果前面元素大于后面元素,则交换两个元素位置

需要比对的次数(N-1)+(N-2)+...+1 =N*(N-1)/2

算法评判

  • 时间复杂度

    O(N^2)

  • 空间复杂度

    O(1)

    只需要常量级的辅助空间,所以也叫原地排序

  • 稳定性

    如果不互换两个相等元素,则是稳定的

实现代码如下

public void sort(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr.length - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                swap(arr, j, j + 1);
            }
        }
    }
}

优化,当某一轮评选下来发现没有元素交换,说明已经有序了,可以提前结束排序。优化后代码如下

public void sort(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
      boolean sorted=true;
        for (int j = 0; j < arr.length - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                swap(arr, j, j + 1);
                sorted=false;
            }
        }
      if(sorted){
        break;
      }
    }
}

相关文章

网友评论

      本文标题:经典排序算法系列1-冒泡排序

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