快速排序

以第一个数为基准数,先从右找到一个小于它的数位置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)
}