[GO]冒泡排序的原理和代码实现

2021-07-14 22:07

阅读:752

标签:执行   个数   src   数组下标   nbsp   com   ++   比较   mat   

冒泡排序的原理:对于一个数组里所有的元素进行两两比较,发生大于则变换数组下标则为升序排序,发生小于则变换数据下标的则为降序排序 

技术分享图片

比如给定的数组为[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  {
        a[i] = rand.Intn(100)
        fmt.Printf("%d, ", a[i])
    }
    fmt.Println("\n")
    for i := 0; i 1; i++ {
        for j := 0; j 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  {
        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]冒泡排序的原理和代码实现

标签:执行   个数   src   数组下标   nbsp   com   ++   比较   mat   

原文地址:https://www.cnblogs.com/baylorqu/p/9537647.html


评论


亲,登录后才可以留言!