1. 程式人生 > 實用技巧 >氣泡排序

氣泡排序

氣泡排序

氣泡排序類似於泡泡一樣從底層逐次上升到高層的排序過程,每次從陣列的第一個元素開始,按(第1個,第2個),(第2個,第3個),(第3個,第4個)...的過程進行比較,每次都取最大的值放置到後面的位置,那麼最後得到的值就一定是陣列中的最大值,然後將該值排除在外,然後在剩餘的陣列元素中繼續進行上述過程,直至只剩下第一個元素(一定是最小的)。
假定初始陣列為{4,2,3,1}

第一輪氣泡排序之後得到{2,3,1,4},以下是詳細的比較過程:

第二輪氣泡排序之後得到{2,1,3,4},以下是詳細的比較過程:

第三輪氣泡排序之後得到{1,2,3,4},以下是詳細的比較過程:

第四輪氣泡排序只剩第一個元素值,該值一定是最小值,所以可以得到最終結果為{1,2,3,4}

對應的演算法程式碼為:

static void Bubble(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
        int range = arr.length - i;
        for (int j = 0; j < range - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                Utils.swap(arr, j, j + 1);
            }
        }
    }
}

測試排序結果

通過對數器的方式進行排序結果的驗證

//測試程式碼
public static void main(String[] args) {
    int size = 15;
    int[] arr1 = Utils.generateRandomArray(size, 100);
    int[] arr2 = new int[size];
    System.arraycopy(arr1, 0, arr2, 0, arr1.length);
    System.out.println("原陣列:\t\t\t" + Arrays.toString(arr1));
    Arrays.sort(arr1);
    System.out.println("系統方法排序後:\t" + Arrays.toString(arr1));
    Bubble(arr2);
    System.out.println("氣泡排序排序後:\t" + Arrays.toString(arr2));
}
原陣列:		[46, 54, 58, 98, 25, 86, 19, 98, 72, 16, 40, 93, 33, 82, 29]
系統方法排序後:	[16, 19, 25, 29, 33, 40, 46, 54, 58, 72, 82, 86, 93, 98, 98]
氣泡排序排序後:	[16, 19, 25, 29, 33, 40, 46, 54, 58, 72, 82, 86, 93, 98, 98]

如果對你有幫助,點個贊,或者打個賞吧,嘿嘿
整理不易,請尊重博主的勞動成果