public class QuickSort {
private static int higher;
private int low;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
higher=10;
int[] a=new int[higher];
Random ran=new Random();
for(int index=0;index<higher;index++)
{
a[index]=ran.nextInt(1000);//randomly instantiation array
}
PrintArray(a);
System.out.println("************");
QuickSort q=new QuickSort();//instantiation object
q.quicksort(a, 0, a.length-1);//call quicksort function
q.PrintArray(a);
}
public static void PrintArray(int a[])
{
for(int index=0;index<higher;index++)
{
System.out.println(a[index]);
}
}
public void quicksort(int a[], int low, int high) { //let low=0,high=a.length-1
if (low < high) { //condition judgement
int pivot, p_pos, i; //statement variable
p_pos = low; //p_pos point to low,
pivot = a[p_pos]; //give pivot the value of p_pos
for (i = low + 1; i <= high; i++) {
if (a[i]>pivot) {
p_pos++;
swap(a, p_pos, i);
}
}
swap(a, low, p_pos); //swap the low and p_pos position
quicksort(a, low, p_pos - 1);//get Track left half array
quicksort(a, p_pos + 1, high);//get track right half array
}
}
public void swap(int a[], int i, int j) //use temperate variable to swap data
{
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}