//Be careful to use same partioning as in lecture //and return total number of comparisons func Quicksort(input sort.IntSlice, ps pivotSelector) int { if input.Len() < 2 { return 0 } input.Swap(0, ps(input)) i := 1 for j := 1; j < input.Len(); j++ { if input.Less(j, 0) { input.Swap(i, j) i++ } } input.Swap(0, i-1) comparisons := input.Len() - 1 comparisons += Quicksort(input[:i-1], ps) comparisons += Quicksort(input[i:], ps) return comparisons }