/**
   * Sort the elements of sequence S in nondecreasing order according
   * to comparator c, using the quick-sort algorithm. Most of the work
   * is done by the auxiliary recursive method quickSortStep.
   **/
  public static void quickSort (Sequence S, Comparator c) {
    if (S.size() < 2)
      return; // a sequence with 0 or 1 element is already sorted
    quickSortStep(S, c, 0, S.size()-1); // recursive sort method
  }