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

2019-11-22  本文已影响0人  xgangzai

Bubble Sort-冒泡排序

需求

对N个整数升序排序

思路

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

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

算法评判

实现代码如下

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;
      }
    }
}
上一篇下一篇

猜你喜欢

热点阅读