public void QuickSort{
public void sort(int [] nums){
shuff(nums);
sort(nums,0,nums.length-1);
}
private void sort(int [] nums,int l,int h){
if(l>=h) return ;
int j =partition (nums, l , h);
sort(nums,l,j-1);
sort(nums,j+1,h);
}
private int partition(int [] nums,int l ,int h){
int i=l, j=h+1;
while(true){
while(i<h && nums[i++]< nums[l]);
while(j>l && nums[j--] >nums[l]);
if(i>=j) break;
swap(nums,i,j);
}
swap(nums,l,j)
return j;
}
private void shuff(int [] nums){
List<Comparable> list =Arrays.asList(nums);
Collections.shuff(list);
list.toArray(nums);
}
private void swap(int [] nums,int i,int j){
int t=nums[i];
nums[i]=nums[j];
nums[j] =t;
}
}