冒泡排序 (Golang)
package main
import "fmt"
func main() {
// 需要进行排序的数组
nums := []int{2, 45, 1, 5, 76, 8, 3, 1, 2, 3}
// 进行冒泡排序
bubbleSort(nums, false)
// 在控制台打印
fmt.Println(nums)
}
// 冒泡排序函数
func bubbleSort(arr []int, reverse bool) {
// 获取需要循环的次数
arrLen := len(arr) - 1
// 外层循环用于控制需要比较的轮数,每一轮都能确定一个最大值放在切片最后
for i := 0; i < arrLen; i++ {
// 注意:每一轮循环都能确定一个最大值,所以下一轮循环需要减去已确定的值
// 内层循环用于两两比较相邻元素的大小,并进行交换
for a := 0; a < arrLen-i; a++ {
// 定义一个可以用于控制 正序 还是 倒序 变量
var sortValue bool
if reverse {
sortValue = arr[a] < arr[a+1]
} else {
sortValue = arr[a] > arr[a+1]
}
// 进行位置交换
if sortValue {
arr[a], arr[a+1] = arr[a+1], arr[a]
}
}
}
return
}
评论区