1. 程式人生 > 其它 >(6-2)氣泡排序

(6-2)氣泡排序

基本介紹

    氣泡排序(Bubble Sorting)的基本思想是:通過對待排序序列從前向後(從下標較小的元素開始),依次比較相鄰元素的值,

若發現逆序則交換,使值較大的元素逐漸從前移向後部,就象水底下的氣泡一樣逐漸向上冒。

    因為排序的過程中,各元素不斷接近自己的位置,如果一趟比較下來沒有進行過交換,就說明序列有序,

因此要在排序過程中設定一個標誌flag判斷元素是否進行過交換。從而減少不必要的比較。(這裡說的優化,可以在氣泡排序寫好後,再進行)

 

動態圖解Bubble Sort

https://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html

程式碼實現

public static void bubbleSort(int[] arr) {
        // 氣泡排序 的時間複雜度 O(n^2), 自己寫出
        int temp = 0; // 臨時變數
        boolean flag = false; // 標識變數,表示是否進行過交換
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                // 如果前面的數比後面的數大,則交換
if (arr[j] > arr[j + 1]) { flag = true; temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } if (!flag) { // 在一趟排序中,一次交換都沒有發生過,說明已經排好了 break
; } else { flag = false; // 重置flag!!!, 進行下次判斷 } } }