public class QuickSort {
	public static void main(String argv[]) {
		int limit = Integer.parseInt(argv[0]);
		int i[] = new int[limit];
		for (int c=0; c<limit; c++)
			i[c]=(int) (Math.random()*limit);	
		
		displayArray(i,0,i.length-1);
		quicksort(i,0,i.length-1);		
		displayArray(i,0,i.length-1);
	} //main()

	public static void quicksort(int[] a, int l, int r) {
  		int i=l;
   	int j=r;
   	int pivot = a[(int) ((l+r)/2)];
	   do {
	   	while(a[i] < pivot)
	   		i++;
	      while(pivot < a[j])
	      	j--;
	      if(i<j) 
	      	swap(a,i,j);
        	if (i<=j){
				i++;
          	j--;
			} //if
		} while (i<j);
	   if (l<j)
	   	quicksort(a,l,j);
	   if (i<r)
	   	quicksort(a,i,r);
	} //quicksort()
  
	private static void swap(int[] a, int s, int d) {
   	int temp = a[s];
	   a[d] = a[s];
	   a[s] = temp;
	} //swap()

	private static void displayArray(int[] a, int l, int r) {
   	for(int i=l;i<r-l+1;i++)
      	System.out.print(a[i]+" ");
    	System.out.println();
  	} //displayArray()
} //class QuickSort
