Пример #1
0
//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
}