快速排序

快排

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
}