package main

import "fmt"

func main() {
	var arr = []int{9, 7, 6, 8, 4, 1, 5, 2, 3, 0}
	fmt.Printf("arr: %v\n", arr)
	sort(arr, 0, len(arr)-1)
	fmt.Printf("arr: %v\n", arr)
}

func sort(arr []int, leftBound int, rightBound int) {
	if leftBound > rightBound {
		return
	}
	var left = AdjustArray(arr, leftBound, rightBound)
	fmt.Printf("arr: %v\n", arr)
	sort(arr, leftBound, left-1)
	sort(arr, left+1, rightBound)
}

func AdjustArray(arr []int, leftBound int, rightBound int) int {
	var mid = arr[rightBound]
	var left = leftBound
	var right = rightBound - 1
	for {
		if left >= right {
			break
		}
		for {
			if arr[left] > mid || left >= rightBound {
				break
			}
			left++
		}

		for {
			if arr[right] < mid || right <= leftBound {
				break
			}
			right--
		}
		if left < right {
			swap(arr, left, right)
		}

	}
	swap(arr, left, rightBound)
	return left

}

func swap(arr []int, a, b int) {
	var temp = arr[a]
	arr[a] = arr[b]
	arr[b] = temp
}

输出

arr: [9 7 6 8 4 1 5 2 3 0]
arr: [0 7 6 8 4 1 5 2 3 9]
arr: [0 7 6 8 4 1 5 2 3 9]
arr: [0 2 1 3 4 6 5 7 8 9]
arr: [0 1 2 3 4 6 5 7 8 9]
arr: [0 1 2 3 4 6 5 7 8 9]
arr: [0 1 2 3 4 6 5 7 8 9]
arr: [0 1 2 3 4 6 5 7 8 9]
arr: [0 1 2 3 4 5 6 7 8 9]
arr: [0 1 2 3 4 5 6 7 8 9]
arr: [0 1 2 3 4 5 6 7 8 9]
arr: [0 1 2 3 4 5 6 7 8 9]