private int quicksortStep(int lo, int hi) {
		int pivot = a[lo]; // Get the pivot value.
		// The numbers hi and lo mark the endpoints of a range
		// of numbers that have not yet been tested. Decrease hi
		// and increase lo until they become equal, moving numbers
		// bigger than pivot so that they lie above hi and moving
		// numbers less than the pivot so that they lie below lo.
		// When we begin, A[lo] is an available space, since its
		// value has been moved into the local variable, pivot.
		while (hi > lo) {
			while (hi > lo && a[hi] >= pivot) {
				// Move hi down past numbers greater than pivot.
				// These numbers do not have to be moved.
				hi--;
				//		System.out.println("new hi: " + hi + "______________________");
			}
			if (hi == lo)
				break;
			// The number A[hi] is less than pivot. Move it into
			// the available space at A[lo], leaving an available
			// space at A[hi].
			a[lo] = a[hi];
			lo++;
			while (hi > lo && a[lo] <= pivot) {
				// Move lo up past numbers less than pivot.
				// These numbers do not have to be moved.
				lo++;
				//		System.out.println("new lo: " + lo + "______________________");
			}
			if (hi == lo)
				break;
			// The number A[lo] is greater than pivot. Move it into
			// the available space at A[hi], leaving an available
			// space at A[lo].
			a[hi] = a[lo];
			hi--;
		} // end while
		// At this point, lo has become equal to hi, and there is
		// an available space at that position. This position lies
		// between numbers less than pivot and numbers greater than
		// pivot. Put pivot in this space and return its location.
		a[lo] = pivot;
		return lo;
	} // end QuicksortStep