八大基本排序--冒泡排序

面试中需要手写频率最高的一个排序,也是最简单

冒泡排序就是两两比较,把最大的放到最后面

public class SortDemo {
    public static void main(String[] args) {
        int[] arr = { 2, 1, 4, 5, 3 };
        // 第一轮:12453、12453、12453、12435【此时5已经排好序了,第二轮比较的时候不需要再算上5】
        // 第二轮:12435、12435、12345
        // ...
        SortDemo.bubble(arr);
    }

    // 冒泡排序
    public static void bubble(int[] arr) {
        // 比较length-1轮,剩下的那一个数字自然就是最小的排在最前面
        for (int i = 0; i < arr.length - 1; i++) {
            // 每轮比较多少次、上一轮已经排好序的不需要再动了
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
                System.out.println(Arrays.toString(arr));
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

时间复杂度O(n^2)

可以通过增加一个附加标记来优化该算法

猜你喜欢

转载自www.cnblogs.com/yuange678/p/10628716.html