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 次遍历之后才能归位。