import java.util.Objects;

/**
 * 空间复杂度:1
 * 最好时间复杂度:n
 * 最坏时间复杂度:n^2
 * 平均时间复杂度:n^2
 * 稳定性:稳定
 */
public class BubbleSort {

    private static void swap(int[] array, int a, int b) {
        if (a == b) {
            return;
        }
        int t = array[a];
        array[a] = array[b];
        array[b] = t;
    }

    private static void sort(int[] array) {
        if (Objects.isNull(array) || array.length == 0) {
            return;
        }

        int len = array.length;

        for (int i = len - 1;i >= 0; -- i) {
            boolean exchanged = false;
            for (int j = 0;j < i; ++ j) {
                if (array[j] > array[j + 1]) {
                    exchanged = true;
                    swap(array, j, j + 1);
                }
            }
            if (!exchanged) {
                return;
            }
        }
    }

    public static void main(String[] args) {
        int[] array = {9, 2, 3, 6, 4, 8, 5, 0, 7, 1};
        sort(array);
        for (int i = 0;i < array.length; ++ i) {
            System.out.println(array[i]);
        }
    }
}