package introductionToAlgorithms;
public class QuickSort {
static int[] a = {3,1,7,4,10,6,8,9,2,5};
static int findPivot(int low,int high) {
int i = low, j = high+1;
int pivotValue = a[low];
while( true ) {
while( a[--j] > pivotValue );
System.out.println(" j = " + j);
while( i < j && a[++i] < pivotValue );
System.out.println(" i = " + i);
if( i >= j ) break;
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
a[low] = a[j];
a[j] = pivotValue;
return j;
}
static void quickSort(int low, int high){
if( low < high ) {
int pivot = findPivot(low,high);
quickSort(low,pivot-1);
quickSort(pivot+1,high);
}
}
static void printArray() {
for(int value: a)
System.out.print(value + " ");
System.out.println();
}
public static void main(String[] args) {
printArray();
quickSort(0,a.length-1);
printArray();
}
}