快速排序
以第一个数为基准数,先从右找到一个小于它的数位置i,再从左找到一个大于它的数位置j,交换两数字。循环执行,直到i==j此时中断循环,因为先从右寻找所以i可以保证为比base小的数字,最后将他俩交换,至此i左侧全为小于等于的数字,i右侧全为大于等于的数字,然后递归区间。
func quickSort(nums []int, left, right int) {
if left >= right {
return
}
base := nums[left] //基准数
i := left
j := right
for i != j {
for nums[j] >= base && i < j {
j--
}
for nums[i] <= base && i < j {
i++
}
nums[i], nums[j] = nums[j], nums[i]
}
nums[left], nums[i] = nums[i], nums[left]
quickSort(nums, left, i -1)
quickSort(nums,i+1, right)
}