Java 冒泡排序 优化后

160 阅读1分钟
package com.usual;
 
import java.util.Arrays;
 
/**
 * @Author you guess
 * @Date 2021/1/4 11:10
 * @Version 1.0
 * @Desc
 */
public class BubbleSort {
 
    public static void main(String[] args) {
        BubbleSort main = new BubbleSort();
        //int[] arr = new int[]{1, 5, 9, 7, 3};//1,3,5,7,9,
        int[] arr = new int[]{1, 56, 5, 9, 7, 3, 34, 23, 12,};//1,3,5,7,9,12,23,34,56,
        main.bubbleSort(arr);
        Arrays.stream(arr).forEach(e -> System.out.print(e + ","));
        //System.out.println();//[I@e73f9ac
    }
 
    public void bubbleSort(int[] arr) {
        int temp;
        //每趟只对前面的元素排序即可
        for (int i = arr.length - 1; i >= 1; i--) {//到1即可;即使i=0,后面j = 0,不小于0,也是退出
            boolean flag = false;
            for (int j = 0; j < i; j++) {//后面是arr[j] 与  arr[j + 1] 比较,所以j < i即可
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    flag = true;//发生交换
                }
            }
            if (!flag) break;
        }
    }//bubbleSort
}

综上所述:

最优的时间复杂度为:O( n^2 )

最差的时间复杂度为:O( n^2 );

平均的时间复杂度为:O( n^2 );

end