public void quickSort(int[] nums, int start, int end){
if(start == end)
return;
int index = partition(nums,start,end);
if(index > start)
quickSort(nums,start,index-1);
if(index < end)
quickSort(nums,index+1,end);
}
public int partition(int[] nums, int start, int end){
int index = (int)(Math.random()*(end-start+1)) + start;
swap(nums,index,end);
int small = start-1;
for(index = start; index < end; index++){
if(nums[index] < nums[end]){
small++;
if(small != index)
swap(nums,small,index);
}
}
small++;
swap(nums,small,end);
return small;
}
public void swap(int[] nums, int index1, int index2){
int temp = nums[index1];
nums[index1] = nums[index2];
nums[index2] = temp;
}