1. 程式人生 > >[GO]冒泡排序的原理和代碼實現

[GO]冒泡排序的原理和代碼實現

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]冒泡排序的原理和代碼實現