package main
import "fmt"
func partition(nums []int, low, high int) int {
pivot := nums[low]
for low < high {
for low < high && nums[high] >= pivot {
high--
}
nums[low] = nums[high]
for low < high && nums[low] < pivot {
low++
}
nums[high] = nums[low]
}
nums[low] = pivot
return low
}
func _quickSort(nums []int, low, high int) {
if low >= high {
return
}
mid := partition(nums, low, high)
_quickSort(nums, low, mid)
_quickSort(nums, mid+1, high)
}
func quickSort(nums []int) {
_quickSort(nums, 0, len(nums)-1)
}
func main() {
nums := []int{1, 2, 7, 4, 5, 3}
quickSort(nums)
fmt.Println(nums)
}