func sortNum(list []int, scope ...int) {
if len(scope) == 0 {
scope = []int{0, len(list) - 1}
}
// 数组元素个数小于2 ,左指针不小于右指针 退出
if len(list) < 2 || scope[0] > scope[1] {
return
}
low, high := scope[0], scope[1]
// 随机选择基准元素
index := rand.Intn(high-low+1) + low
povit := list[index]
list[index] = list[low]
for low < high {
// 右指针
for low < high && list[high] > povit {
high--
}
// 比基准值小移动到左边左指针+1
if low < high {
list[low] = list[high]
low++
}
// 左指针
for low < high && list[low] <= povit {
low++
}
// 比基准值大移动到右部右指针-1
if low < high {
list[high] = list[low]
high--
}
}
list[low] = povit
sortNum(list, scope[0], low-1)
sortNum(list, high+1, scope[1])
}
快速排序 go 语言实现
最新推荐文章于 2024-07-24 20:25:39 发布