static <T extends Comparable<T>> void
quicksort(T array[], int left, int right) {
// Permute the array segment array[left..right - 1] such that if
// left <= i < j < right, then array[i] < array[j].
if (right - left > 1) {
final int mid = partition(array, left, right);
quicksort(array, left, mid);
quicksort(array, mid + 1, right);
}
}