美文网首页Linux运维
golang实现冒泡算法

golang实现冒泡算法

作者: 菩提老鹰 | 来源:发表于2020-05-27 17:49 被阅读0次

    具体代码实现

    /**
     * 冒泡算法 go 实现
     */
    
    package main
    
    import (
        "fmt"
        "math/rand"
        "time"
    )
    
    func main() {
        // 获取随机数个数
        randCount := 10
        randRandMax := 100
        // bucketMax := randRandMax + 1
        // make 创建切片,已经初始化完毕。在append的话,前面值都为0
        // randList := make([]int, randCount)
        var randList []int
        // 随机数中添加种子,可以保证每次执行,产生的随机数是“真的”随机
        seed := rand.New(rand.NewSource(time.Now().UnixNano()))
        for index := 0; index < randCount; index++ {
            number := seed.Intn(randRandMax)
            randList = append(randList, number)
        }
        fmt.Printf("原始列表[%d]: %v\n", len(randList), randList)
    
        // 最外层表示一共循环的次数
        for i := 0; i < len(randList)-1; i++ {
            // 内层表示逐层比较的次数递减
            for j := 0; j < len(randList)-1-i; j++ {
                // 这里打印出来 i, j, j+1 来验证实际的冒泡 是相邻的两个数字做对比
                // 并且对比次数是逐层递减的
                fmt.Println(i, j, j+1)
                // // sort Z -> A
                // if randList[j] < randList[j+1] {
                //  randList[j], randList[j+1] = randList[j+1], randList[j]
                // }
                // sort A -> Z
                if randList[j] < randList[j+1] {
                    randList[j], randList[j+1] = randList[j+1], randList[j]
                }
    
            }
            fmt.Println("<-------------->")
            // fmt.Println(i, randList[i])
        }
        fmt.Println("\n排序结束\n排序列表: ", randList)
    }
    
    

    结果展示

    原始列表[10]: [58 52 40 0 38 67 12 22 74 18]
    0 0 1
    0 1 2
    0 2 3
    0 3 4
    0 4 5
    0 5 6
    0 6 7
    0 7 8
    0 8 9
    <-------------->
    1 0 1
    1 1 2
    1 2 3
    1 3 4
    1 4 5
    1 5 6
    1 6 7
    1 7 8
    <-------------->
    2 0 1
    2 1 2
    2 2 3
    2 3 4
    2 4 5
    2 5 6
    2 6 7
    <-------------->
    3 0 1
    3 1 2
    3 2 3
    3 3 4
    3 4 5
    3 5 6
    <-------------->
    4 0 1
    4 1 2
    4 2 3
    4 3 4
    4 4 5
    <-------------->
    5 0 1
    5 1 2
    5 2 3
    5 3 4
    <-------------->
    6 0 1
    6 1 2
    6 2 3
    <-------------->
    7 0 1
    7 1 2
    <-------------->
    8 0 1
    <-------------->
    
    排序结束
    排序列表:  [74 67 58 52 40 38 22 18 12 0]
    

    相关文章

      网友评论

        本文标题:golang实现冒泡算法

        本文链接:https://www.haomeiwen.com/subject/xxkgahtx.html