private int partition(int[] data, int low, int high , int order, Random random){
		int p = low + random.nextInt(high - low + 1);	//important
		int sentry = data[p];
		
		swipe(data, p, high);
		
		int index = low;
		
		for(int i=low; i<high; i++){
			if(QuickSort.ASCENT == order){
				if(data[i] <= sentry){
					swipe(data, index, i);
					index++;
				}
			}else{
				if(data[i] >= sentry){
					swipe(data, index, i);
					index++;
				}
			}
		}
		
		swipe(data, index, high);
		
		
		return index;
	}