快速排序
package main
import "fmt"
func main() {
nums := []int{2, 45, 1, 5, 76, 8, 3, 1, 2, 3}
quickSort(nums, false)
fmt.Println(nums)
}
func quickSort(arr []int, reverse bool) {
if len(arr) <= 1 {
return
}
pivot := arr[len(arr)-1]
left, right := make([]int, 0), make([]int, 0)
for i := 0; i < len(arr)-1; i++ {
var sortValue bool
if reverse {
sortValue = arr[i] < pivot
} else {
sortValue = arr[i] > pivot
}
if sortValue {
left = append(left, arr[i])
} else {
right = append(right, arr[i])
}
}
quickSort(left, reverse)
quickSort(right, reverse)
copy(arr, append(append(left, pivot), right...))
}
评论区