Golang 實現氣泡排序

2021-10-08 02:01:11 字數 987 閱讀 6953

本文實現氣泡排序,充分利用go語言特性。

氣泡排序迴圈集合n次的排序演算法,每次遍歷一次集合。其檢查第乙個元素和第二個元素,如果第乙個大於第二個則交換它們,整個過程重複執行該動作。

該演算法時間複雜度為o(n*n),n為待排序元素個數,最壞情況是下面示例:

[9,8,7,6,5,4,3,2,1,0]
對於完全是逆序陣列,氣泡排序需要迭代10次。最好場景是o(n), 在這之間可考慮優化,第一次迭代之後,最大的已經排好序,下次就可以不比較它;這樣每次遍歷之後總長度就少乙個。再者,如果一次遍歷並沒有任何交換則說明已經排好序了,可提前結束。

go 提供了非常酷的交換機制————多變數同時賦值。同時增加交換標識,標識是否已經排好序。每次迭代檢查第n個和第n+1個,如果前者大於後者則交換。

package sort

import "fmt"

func bubblesort(data int)

} j++

}}

測試**:

package sort

import (

"fmt"

"testing"

)func testbubblesort(t *testing.t)

fmt.println(data)

bubblesort(data)

fmt.println(data)

}

執行程式會看到它交換了陣列中值,直到最後最大值冒泡到頂部,最終得到排序過的陣列。

執行結果:

=== run   testbubblesort

[3 9 7 4 5 2 1]

[1 2 3 4 5 7 9]

--- pass: testbubblesort (0.00s)

pass

本文我們使用go實現氣泡排序,使用多變數同時賦值特性,學習了氣泡排序演算法。

氣泡排序(golang實現)

氣泡排序 bubble sort 是一種電腦科學領域的較簡單的排序演算法。它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序 如從大到小 首字母從a到z 錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素已經排序完成。氣泡排序 第一次迴圈,確定...

golang 氣泡排序實現

排序,顧名思義,就是把一坨數字按照某種特定的順序排列好了,比如從小到大又或者從大到小。氣泡排序,冒泡嘛,形象一點兒,就是乙個個泡泡往上湧,然後和 相鄰的泡泡 比試,最後最小的泡泡浮到了水面上。既然是想要讓小的從底部都湧到上面,那麼為何不嘗試一下最後往前呢?package main import fm...

Golang語言實現氣泡排序

氣泡排序就是每次內層迴圈找出最大的值,並放在切片的最右邊,找最大值的方式 從下標為零的開始比較 下標為0與下標為1的大小,比它前面 i 1 的大就跟前面的交換,直到最大的到最右邊即就是 等於end package main import fmt func main bubblesort s1 fmt...