Go語言氣泡排序

2020-07-16 10:05:18
氣泡排序法是一種最簡單的交換類排序方法,它是通過相鄰資料的交換逐步將無序列表排列為有序列表。

氣泡排序的基本原理是重複地迴圈遍歷要排序的元素列,依次比較兩個相鄰的元素,如果順序(如從小到大或者首字母從 Z 到 A)錯誤就把兩個元素的位置交換過來,直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。

氣泡排序的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端(升序或降序排列),就如同氣泡最終會上浮到頂端一樣,故名“氣泡排序”。

下面通過一個範例來演示一下氣泡排序,完整程式碼如下:
package main

import (
   "fmt"
)
/**
氣泡排序
*/
func main() {
    arr := [...]int{21,32,12,33,34,34,87,24}
    var n = len(arr)
    fmt.Println("--------沒排序前--------n",arr)
    for i := 0; i <= n-1; i++ {
        fmt.Println("--------第",i+1,"次冒泡--------")
        for j := i; j <= n-1; j++ {
            if arr[i] > arr[j] {
                t := arr[i]
                arr[i] = arr[j]
                arr[j] = t
            }
            fmt.Println(arr)

        }
    }
    fmt.Println("--------最終結果--------n",arr)
}
執行結果如下所示:

D:code>go run main.go
--------沒排序前--------
[21 32 12 33 34 34 87 24]
--------第 1 次冒泡--------
[21 32 12 33 34 34 87 24]
[21 32 12 33 34 34 87 24]
[12 32 21 33 34 34 87 24]
[12 32 21 33 34 34 87 24]
[12 32 21 33 34 34 87 24]
[12 32 21 33 34 34 87 24]
[12 32 21 33 34 34 87 24]
[12 32 21 33 34 34 87 24]
--------第 2 次冒泡--------
[12 32 21 33 34 34 87 24]
[12 21 32 33 34 34 87 24]
[12 21 32 33 34 34 87 24]
[12 21 32 33 34 34 87 24]
[12 21 32 33 34 34 87 24]
[12 21 32 33 34 34 87 24]
[12 21 32 33 34 34 87 24]
--------第 3 次冒泡--------
[12 21 32 33 34 34 87 24]
[12 21 32 33 34 34 87 24]
[12 21 32 33 34 34 87 24]
[12 21 32 33 34 34 87 24]
[12 21 32 33 34 34 87 24]
[12 21 24 33 34 34 87 32]
--------第 4 次冒泡--------
[12 21 24 33 34 34 87 32]
[12 21 24 33 34 34 87 32]
[12 21 24 33 34 34 87 32]
[12 21 24 33 34 34 87 32]
[12 21 24 32 34 34 87 33]
--------第 5 次冒泡--------
[12 21 24 32 34 34 87 33]
[12 21 24 32 34 34 87 33]
[12 21 24 32 34 34 87 33]
[12 21 24 32 33 34 87 34]
--------第 6 次冒泡--------
[12 21 24 32 33 34 87 34]
[12 21 24 32 33 34 87 34]
[12 21 24 32 33 34 87 34]
--------第 7 次冒泡--------
[12 21 24 32 33 34 87 34]
[12 21 24 32 33 34 34 87]
--------第 8 次冒泡--------
[12 21 24 32 33 34 34 87]
--------最終結果--------
[12 21 24 32 33 34 34 87]