public static int partition2(int [] A, int lo, int hi) {
int pivot,i,j;
pivot = Randnums.randnum(lo,hi-1);
int mid = pivot;
//locate pivot in well known position -- at
front of the list
swap(A, lo, pivot);
i = lo;
j= i + 1;
while (j < hi) {
count+2; cmprs++;
if (A[j] <= A[lo]) {
i = i + 1;
swap(A, i, j);
}
j++;
}
//put pivot into its right position
swap(A, lo, i);
count++;
return i;
} // end partition2;
public static void quicksort2(int [] A, int lo, int hi) {
int split;
count++;
if ((hi - lo) > 1) {
split = partition2(A,lo,hi);
quicksort2(A,lo,split);
quicksort2(A,split+1,hi);
}
} // end quicksort