快排学习视频B站快排讲的贼详细,
下面附上菜鸡实现,求个大佬交流
package main
import "fmt"
func main() {
ints := []int{2, 44, 4, 8, 33, 1, 22, -11, 6, 34, 55, 54, 9}
QuickSort(ints)
fmt.Println(ints)
}
func QuickSort(ints []int) {
if len(ints) <= 1 { //特殊情况为空或长度唯一
return
}
num := ints[0]
var i, j int
for i, j = 0, len(ints)-1; i < j; {
for { //循环移动右边的指针
if i >= j { //当右边的指针与左边指针重合退出右边
break
}
if ints[j] < num { //数据交换
ints[i] = ints[j]
i++ //同把左指针移动
break
}
j--
}
for {
if i >= j { //循环移动左边的指针
break
}
if ints[i] > num { //当右边的指针与左边指针重合退出左边
ints[j] = ints[i]
j--
break
}
i++
}
if i >= j {
ints[i] = num
break
}
}
if i > 0 {
QuickSort(ints[:i])
}
if i < len(ints)-1 {
QuickSort(ints[i+1:])
}
}