1. 程式人生 > 其它 >排序演算法 - 冒泡(Bubble Sort)

排序演算法 - 冒泡(Bubble Sort)

氣泡排序

氣泡排序 (Bubble Sort) 是通過重複地比較相鄰兩個元素,將較大或較小的元素後移的排序演算法。因排序過程中元素如同冒泡一樣地移動,所以被稱為 氣泡排序

1、演算法描述

\(n\) 個記錄 \((0\cdots n)\) 升序排列:

  1. 比較相鄰兩個元素 \((...a,b...)\),若 \(a > b\),交換 \(a,b\)
  2. 對每組相鄰元素進行 1. 操作,最大的元素將被交換到最後;
  3. 排除最後一個元素,重複 1. 2. 操作;
  4. 重複 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
}

參考文獻

十大經典排序演算法(動圖演示) - 一畫素 - 部落格園 (cnblogs.com)