1. 快速排序
2. 实现
func s(arr []int) interface{} {
return sort(arr, 0, len(arr)-1) // 排序的数组,0,总共键值
}
func sort(arr []int, l int, r int) interface{} {
if l >= r{ // 递归终止条件
return arr
}
p := partition(arr, l, r) // 核心操作,传递数组,开头,结尾
sort(arr, l, p-1) // 递归调用 左边
sort(arr, p+1, r) // 同上
return arr
}
func partition(arr []int, l int, r int) int {
j := l // 设置标定点
for i:=j+1; i<=r; i++ { // 循环除了标定点以外的数据
if arr[i] < arr[l] { // 数据比较
j++
swap(arr, i, j) // 数值翻转
}
}
swap(arr, l, j) // 最后将 l 与 j 进行翻转
return j
}
func swap(arr []int, i int, j int) {
t := arr[i]
arr[i] = arr[j]
arr[j] = t
}
func main () {
arr := []int{9,4,7,2,5,6,3,8,1} // 例子
res := s(arr) // 调用 s 方法
fmt.Println(res)
}