首頁 > 後端開發 > Golang > 主體

golang冒泡怎麼排名

WBOY
發布: 2023-05-10 11:52:06
原創
1134 人瀏覽過

Golang冒泡排序演算法詳解

冒泡排序是常見的排序演算法,它的原理非常簡單,就是一種交換排序。這個演算法的核心思想是比較相鄰兩個元素的大小,然後根據大小關係交換它們的位置,每一輪都將最大或最小的元素排到序列的一端。具體的實現方式有兩種:一種是從前往後,一種是從後往前。本文將介紹golang冒泡排序的實作方式。

首先,我們建立一個整數數組,傳入冒泡排序函數:

package main

import "fmt"

func main() {
    arr := []int{3, 7, 1, 4, 2, 8, 5, 9, 6}
    fmt.Println("排序前:",arr)
    BubbleSort(arr)
    fmt.Println("排序后:",arr)
}

func BubbleSort(arr []int) {
    n := len(arr)
    for i := 0; i < n-1; i++ {
        for j := 0; j < n-1-i; j++ {
            if arr[j] > arr[j+1] {
                arr[j], arr[j+1] = arr[j+1], arr[j]
            }
        }
    }
}
登入後複製

在BubbleSort函數中,我們先取得數組的長度,然後設定兩個循環巢狀。外層循環是對於整個陣列的循環,內層循環是對於元素的循環。在內層循環中,我們比較相鄰的元素大小,然後根據大小關係交換它們的位置。

交換的方式是透過golang的多重賦值來實現的,即"arr[j], arr[j 1] = arr[j 1], arr[j]"。此語句將arr[j 1]的值賦值給arr[j],arr[j]的值賦值給arr[j 1]。這樣就可以完成兩個元素之間的交換。

要注意的是,每一輪排序會將最小或最大的元素移動到序列的一端。為了確保效率,我們需要在外層循環中減去已經排序好的元素個數i,即"for j := 0; j < n-1-i; j "。這樣,每一輪排序的比較次數就不會包含已經排序好的元素。

最後,我們在main函數中呼叫BubbleSort函數,並在控制台上列印排序前和排序後的陣列結果。

接下來我們測試一下該演算法的效能。我們可以使用golang自帶的testing函式庫,來進行測試。具體的測試程式碼如下:

package main

import (
    "testing"
)

func TestBubbleSort(t *testing.T) {
    arr := []int{3, 7, 1, 4, 2, 8, 5, 9, 6}
    BubbleSort(arr)
    if !checkSort(arr) {
        t.Error("BubbleSort test failed")
    }
}

func checkSort(arr []int) bool {
    n := len(arr)
    for i := 0; i < n-1; i++ {
        if arr[i] > arr[i+1] {
            return false
        }
    }
    return true
}
登入後複製

在main函數中,我們定義了一個叫做TestBubbleSort的函數,該函數是用來測試我們所寫的BubbleSort函數的正確性。測試函數中,我們呼叫BubbleSort函數,並透過checkSort函數判斷排序結果是否正確。如果排序結果有誤,則輸出「BubbleSort test failed」的錯誤訊息。

接下來,我們使用go test指令來執行測試。在命令列中輸入以下命令:

go test -v -run="TestBubbleSort"
登入後複製

該命令將會執行TestBubbleSort函數,並在控制台上輸出測試結果。結果如下:

=== RUN   TestBubbleSort
--- PASS: TestBubbleSort (0.00s)
PASS
ok      _/home/go_ws/src/gotest/src/TestBubbleSort   0.097s
登入後複製

從測試結果可以看出,排序演算法通過了單元測試,測試時間只有0.097秒。因此此冒泡排序演算法在效率上表現良好。

總結

本篇文章介紹了golang中冒泡排序的實作方式,並且透過單元測試驗證了排序演算法的正確性和效率。在實際應用中,我們可以根據需要對該演算法進行適當的最佳化,以達到更好的排序效果。

以上是golang冒泡怎麼排名的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板