优化版 冒泡排序 含动图

public class BubbleSort {
    
    
    //时间复杂度:O(n^2),空间复杂度:O(1),时间复杂度最好情况为O(n)。
    //程序运行时间:125743ms
    public static void main(String[] args) {
    
    
        int[] a = {
    
    9, 3, 1, 4, 6, 8, 7, 5, 2};
        sort(a);
        print(a);
    }

    static void sort(int[] a) {
    
    
        for (int j = 1; j < a.length; j++) {
    
    
            boolean flag = true;//优化
            for (int i = 0; i < a.length - j; i++) {
    
    
                if (a[i] > a[i + 1]){
    
    
                    swap(a, i, i + 1);
                    flag = false;//优化的地方,减少不必要的步骤
                }
            }
            if (flag) break;
        }
    }

    static void print(int[] arr) {
    
    
        for (int k = 0; k < arr.length; k++) System.out.print(arr[k] + " ");
    }

    static void swap(int[] arr, int i, int j) {
    
    
        int tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }

}

在这里插入图片描述

Guess you like

Origin blog.csdn.net/Sherlook_Holmes/article/details/120803822