快速排序

重新学习算法,快排,算法导论中的

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)
}
posted @ 2022-04-10 16:44  happy_codes  阅读(13)  评论(0编辑  收藏  举报