public static void quicksort(Comparable[] a, int lo, int hi) {
		if (lo < hi) {
			int pivotIndex = lo;
			Comparable pivot = a[pivotIndex];
			a[pivotIndex] = a[hi];
			a[hi] = pivot;

			int i = lo - 1;
			int j = hi;
			do {
				do { 
					i++; 
				} 
				while (a[i].compareTo(pivot) < 0);
				do { 
					j--; 
				} 
				while ((a[j].compareTo(pivot) > 0) && (j > lo));
				if (i < j) 
				{
					Comparable holder = a[i];
					a[i]=a[j];
					a[j] = holder;
				}
			} while (i < j);

			a[hi] = a[i];
			a[i] = pivot;          
			quicksort(a, lo, i - 1);   
			quicksort(a, i + 1, hi); 
		}
	}