func sortArray(nums []int) []int {
quickSort(nums, 0, len(nums)-1)
return nums
}
// 快排,分治的思想,选一个中轴,
// 把小于中轴的元素放到左边,大于中轴的元素放到右边
// 然后递归处理中轴两边的元素
func quickSort(nums []int, left, right int) {
if left >= right {
return
}
i := left
j := right
key := nums[left] // 选左边第一个为中轴
for i < j {
// 先从右边扫描,找到小于中轴的元素
for i < j && nums[j] >=key {
j--
}
if i < j {
nums[i] = nums[j]
}
// 再从左边扫,找到大于中轴的元素
for i < j && nums[i] <= key {
i++
}
if i < j {
nums[j] = nums[i]
}
}
nums[i] = key // 把中轴元素放在中间
quickSort(nums, left, i-1)
quickSort(nums, i+1, right)
}
标签:right,nums,int,元素,中轴,排序,快速,left
From: https://www.cnblogs.com/gdut17code/p/18237383