快排

哎,比想象中的花时间啊!

代码这东西,还是保持手感。唯手熟尔。

func sortArray(nums []int) []int {
    start := 0
    left := 0 
    right := len(nums) - 1
    end := len(nums)
    if left >= right || len(nums) <= 1{
        return nums
    }
    
    pos := (right - left) / 2
    mid := nums[pos]
    nums[left], nums[pos] = nums[pos], nums[left]
    for left < right{
        for nums[right] >= mid && left < right{
            right--
        }
        nums[left], nums[right] = nums[right], nums[left]
        
        for nums[left] <= mid && left < right{
            left++
        }
        nums[left], nums[right] = nums[right], nums[left]
    } 
    
    sortArray(nums[right+1:end])
    sortArray(nums[start:left])
    
    return nums
}