(6-2)氣泡排序
阿新 • • 發佈:2022-03-30
基本介紹
氣泡排序(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!!!, 進行下次判斷 } } }