冒泡排序的每次外层循环都将当前最大值(最小值)排列到相应位置。
例如给数组data[10]进行从小到大的冒泡排序
第一次循环将最大值存放到data[9]的位置上
第二次循环将剩余的最大值存放到data[8]的位置上
package main
import (
"fmt"
"math/rand"
"time"
)
//从小到大排列
func bubbleSort(data []int) {
size := len(data)
/*
外层循环,依次针对从最右到最左的每个位置进行内层循环的冒泡
第一次循环,将最大值存放到最右边的位置
第二次循环,将第二大的值存放到最右边第二的位置
...
*/
for i := 0; i < size; i++ {
/*
内存循环,冒泡,从data[0]到data[size-1-i]
每次都使用data[j]和data[j+1]比较
如果data[j] > data[j+1],则交换二者位置
确保最大的数往上冒泡
*/
for j := 0; j < size-1-i; j++ {
if data[j] > data[j+1] {
data[j], data[j+1] = data[j+1], data[j]
}
}
}
}
func main() {
rand.Seed(time.Now().UnixNano() / 1000)
arr := [100]int{}
for i := 0; i < 100; i++ {
arr[i] = rand.Intn(1000)
}
fmt.Println(arr)
bubbleSort(arr[:])
fmt.Println(arr)
}
本文介绍了如何用Go语言实现冒泡排序算法,通过外层循环逐步将最大值移动到正确位置,如将最大值依次存放到data[9]和data[8]等位置,完成数组从小到大的排序过程。
281

被折叠的 条评论
为什么被折叠?



