快速排序
重新学习算法,快排,算法导论中的
import "fmt"
// Partition 分治这一部分
func Partition(A []int, l, r int) int {
q := l - 1
for j := l; j < r; j++ {
if A[j] <= A[r] {
q++
A[j], A[q] = A[q], A[j]
}
}
q++
A[r], A[q] = A[q], A[r]
return q
}
// QuickSort 快排, 算法导论实现
func QuickSort(A []int, l, r int) {
if l >= r {
return
}
q := Partition(A, l, r)
QuickSort(A, l, q-1)
QuickSort(A, q+1, r)
}
func main() {
ll := []int{3, 5, 6, 8, 9, 10}
ll = []int{3, 5, 8, 8, 9, 9, 1}
QuickSort(ll, 0, len(ll)-1)
fmt.Println(ll)
}