算法-冒泡排序及其效率

算法步骤

(1)比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。
(2)这样对数组的第 0 个数据到 N-1 个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1 个位置。
(3)N=N-1,如果 N 不为 0 就重复前面二步,否则排序完成。

代码示例

/**
 * 冒泡排序。
 * @param array 需要排序的数组
 */
public static void bubbleSort(int[] array) {
    for(int i = 0; i < array.length; i++) {
        for(int j = 1; j < array.length - i; j++) {
            // 如果前面的数大,交换。
            if(array[j - 1] > array[j]) {
                int tmp = array[j - 1];
                array[j - 1] = array[j];
                array[j] = tmp;
            }
        }
    }
}

调用示例:

public static void main(String[] args) {
    int[] array = {8, 9, 2, 0, 5, 2, 22, 39, 10, 33};
    bubbleSort(array);
    for(int i : array) {
        System.out.println(i);
    }
}

时间复杂度

因为冒泡排序的特殊性,可能一次就排好了,也可能得一直排到最后;
所以就有了最好情况和最坏情况。
最好情况:就是比较一次,就是 O(N)
最坏情况:一直排到最后,就是 O(N^2)

上一篇:算法-插入排序算法


下一篇:Springboot-设置上传文件大小与不安全的HTTP方法