1. 程式人生 > 其它 >資料結構與演算法 - 排序1 氣泡排序

資料結構與演算法 - 排序1 氣泡排序

技術標籤:Java演算法資料結構與演算法資料結構排序演算法java演算法

public class BubbleSort {
    /**
     * 執行氣泡排序
     * @param arrays 待排序陣列
     * @param order  正序or逆序
     * @return
     */
    public static int[] sort(int[] arrays, boolean order) {
        // 1, 特殊情況, 陣列的長度小於等於1, 沒有必要排序, 直接返回
        if (arrays.length <= 1
) { return arrays; } // 2, 根據order確定是正序, 還是倒序拍你 int flag = order ? 1 : -1; // 3, 資料交換標誌位 boolean change = false; int temp = 0; for (int i = 0; i < arrays.length; i++) { for (int j = 0; j < arrays.length - i - 1; j++) { if
(flag * (arrays[j] - arrays[j + 1]) > 0) { temp = arrays[j]; arrays[j] = arrays[j + 1]; arrays[j + 1] = temp; change = true; } } // 優化, 如果沒有資料交換, 則提前退出 if (!change) { break
; } } return arrays; } /** * 執行氣泡排序 * @param arrays 待排序陣列 * @return */ public static int[] sort(int[] arrays) { return sort(arrays, true); } }

空間複雜度: O(1), 因為是就地排序;
時間複雜度: O(n^2) <-- 平均時間複雜度