package quick-sort func sort(arr []int) []int { var recurse func(left int, right int) var partition func(left int, right int, pivot int) int partition = func(left int, right int, pivot int) int { v := arr[pivot] right-- arr[pivot], arr[right] = arr[right], arr[pivot] for i := left; i < right; i++ { if arr[i] <= v { arr[i], arr[left] = arr[left], arr[i] left++ } } arr[left], arr[right] = arr[right], arr[left] return left } recurse = func(left int, right int) { if left < right { pivot := (right + left) / 2 pivot = partition(left, right, pivot) recurse(left, pivot) recurse(pivot+1, right) } } recurse(0, len(arr)) return arr }