[GO]冒泡排序的原理和代碼實現
阿新 • • 發佈:2018-08-26
unix main 大於 seed 進行 最大值 數組下標 pre 數組
冒泡排序的原理:對於一個數組裏所有的元素進行兩兩比較,發生大於則變換數組下標則為升序排序,發生小於則變換數據下標的則為降序排序
比如給定的數組為[1, -2, 3, -4],對於我們的需求,兩兩比較後則發生下標變換則為升序,第一次比較後,最大值3將被移動到數組為最右邊,整個數組的比較次數和發生變換的次數都有規律可循
幾次比較之後,整個數組將被變換為一個升序的數組
代碼實現如下
package main import ( "math/rand" "time" "fmt" ) func main() { rand.Seed(time.Now().UnixNano())var a [10]int n := len(a) fmt.Println("from ...") for i := 0; i < n; i++ { a[i] = rand.Intn(100) fmt.Printf("%d, ", a[i]) } fmt.Println("\n") for i := 0; i < n-1; i++ { for j := 0; j <n -1 -i; j++ { if a[j] > a[j+1] { a[j], a[j+1] = a[j+1], a[j] } } } fmt.Println("order to....") for i := 0; i < n; i++ { fmt.Printf("%d, ", a[i]) } }
代碼執行結果如下
from ... 47, 28, 82, 47, 2, 15, 40, 15, 13, 88, order to.... 2, 13, 15, 15, 28, 40, 47, 47, 82, 88,
[GO]冒泡排序的原理和代碼實現