Data Structures & Algorithms Lecture Notes

20 April 2010 • Faster Sorting


private static <T extends Comparable<T>> int
partition(T array[], int left, int right) {

  // Permute the non-empty array segment array[left..right - 1] so that, for
  // some left <= mid < right, array[left..mid - 1] <= array[mid] < array[mid
  // + 1..right - 1].  Return mid.

  assert left < right;

  final int l = left++;
  final T pivot = array[l];

  // array[left .. left - 1] <= pivot < a[right .. right' - 1]

  while (left < right)
    if (pivot.compareTo(array[left]) >= 0)
      left++;
    else if (pivot.compareTo(array[right - 1]) < 0)
      right--;
    else
      swap(array, left++, --right);

  swap(array, l, --left);

  return left;
  }


This page last modified on 24 January 2006.