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 30 31 32 33 34
| func quickSortAsc(arr []int, leftStart int, rightStart int) { var leftPoint = leftStart var rightPoint = rightStart var pivot = (leftStart + rightStart) / 2 for leftPoint < rightPoint { for arr[leftPoint] < arr[pivot] { leftPoint += 1 } for arr[rightPoint] > arr[pivot] { rightPoint -= 1 } if leftPoint >= rightPoint { break } arr[leftPoint], arr[rightPoint] = arr[rightPoint],arr[leftPoint] fmt.Println(arr) if arr[leftPoint] == arr[pivot] { leftPoint += 1 } if arr[rightPoint] == arr[pivot] { rightPoint -= 1 } } if leftPoint == rightPoint { leftPoint += 1 rightPoint -= 1 } if leftStart < rightPoint { quickSortAsc(arr, leftStart, rightPoint) } if rightStart > leftPoint { quickSortAsc(arr, leftPoint, rightStart) } }
|