Go语言冒泡排序逻辑求解释,请根据这段代码解释下,就是没看懂i是做什么用的

Python017

Go语言冒泡排序逻辑求解释,请根据这段代码解释下,就是没看懂i是做什么用的,第1张

package main

import "fmt"

func Bub(value []int) {

    flag := true //这里是打一个标识的意思

    for i := 0 i < len(value)-1 i++ { //每完成一次这里的循环,都会有一个元素冒泡到最上面

        flag = true

        fmt.Printf("i=%d j=%d\n", i, len(value)-i-1)

        for j := 0 j < len(value)-i-1 j++ {

            if value[j] > value[j+1] {

                value[j], value[j+1] = value[j+1], value[j]

                flag = false

            }

        }

        if flag == true { //当没有发生位置交换的时候说明,顺序排好了

            break

        }

    }

}

func main() {

    a := []int{7, 2, 1, 3, 5}

    Bub(a)

}

只能帮你到这里了,建议你用在纸上演算一遍 那个 a 变量

选择排序提高了冒泡排序的性能,它每遍历一次列表只交换一次数据,即进行一次遍历时找 到最大的项,完成遍历后,再把它换到正确的位置。和冒泡排序一样,第一次遍历后,最大的数 据项就已归位,第二次遍历使次大项归位。这个过程持续进行,一共需要 n-1 次遍历来排好 n 个数 据,因为最后一个数据必须在第 n-1 次遍历之后才能归位。