排序演算法 - 冒泡(Bubble Sort)
阿新 • • 發佈:2022-01-21
氣泡排序
氣泡排序 (Bubble Sort) 是通過重複地比較相鄰兩個元素,將較大或較小的元素後移的排序演算法。因排序過程中元素如同冒泡一樣地移動,所以被稱為 氣泡排序。
1、演算法描述
\(n\) 個記錄 \((0\cdots n)\) 升序排列:
- 比較相鄰兩個元素 \((...a,b...)\),若 \(a > b\),交換 \(a,b\);
- 對每組相鄰元素進行
1.
操作,最大的元素將被交換到最後; - 排除最後一個元素,重複
1.
2.
操作; - 重複
1.
2.
3.
操作,直到排序完成。
2、Gif 演示
3、程式碼實現
- Golang
package sort func BubbleInt(arr []int, desc bool) []int { if arr == nil || len(arr) < 2 { return arr } // 開始氣泡排序: for i := len(arr); i > 0; i-- { for j := 1; j < i; j++ { // 比較相鄰兩個元素,若滿足條件,則交換兩個元素 // desc 與 arr[j-1] > arr[j] 進行異或操作,判斷升序或降序 // 由於 Golang 中不支援 bool 型別的異或操作,因此將異或運算展開 if !desc && arr[j-1] > arr[j] || desc && arr[j-1] < arr[j] { // 利用異或運算交換元素 arr[j-1] ^= arr[j] arr[j] ^= arr[j-1] arr[j-1] ^= arr[j] } } } return arr }