// Tick 4 Part 1a. Han-Ley Tang.
public class quickSort1a {
public static void main(String[] args)
{
int[] myArray = {1,2,3,4,5,6,7,8,9,10};
quicksort(myArray,0,myArray.length-1);
for (int i = 0; i < myArray.length; i++)
{ System.out.printf("%d,",myArray[i]); }
}
public static void quicksort (int[] a)
{
quicksort(a, 0, a.length-1);
}
private static void quicksort (int[] a, int l, int r)
{
if ( l == r ) //list is empty
return;
int m = partition(a, l, r); //make partition and sort recursively
quicksort(a,l,m-1);
quicksort(a,m+1,r);
}
//partition the array from l+1 to r with pivot a[l]
private static int partition (int[] a, int l, int r)
{
int i=l+1; //define left pointer
int j=r; //define right pointer
int p = a[l]; //pivot element
while (i<=j) //move pointer to center or swap if on wrong sides
{
if (a[i]<=p) i++;
else if (a[j]>p) j--;
else swap(a,i,j);
}
swap(a,l,j); //swap pivot element between partitions
return j;
} //return position of pivot element
//swap two elements in the array
private static void swap (int[] a, int i, int j)
{
int h = a[i];
a[i] = a[j];
a[j] = h; }
}