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

Python020

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 变量

要判断数据类型可以用Go的空接口

建一个函数t 设置参数i 的类型为空接口,空接口可以接受任何数据类型

func t(i interface{}) {

//函数t

有一个参数i

switch i.(type) {

//多选语句switch

case string:

//是字符时做的事情

case int:

//是整数时做的事情

}

return

}

i.(type)

只能在switch中使用

这函数没有返回值,你可以自己加入

还可以用反射:

package main

import (

"fmt"

"reflect"

)

func main() {

var x float64 = 3.4

fmt.Println("type:", reflect.TypeOf(x))

}

这样就可以得出变量x的类型信息,与上面不同的是:上面的方法要先知到它是几个类型中的一个,而这个方法可以对任意对象使用