class Solution {
public int[] sortArray(int[] nums) {
quickSort(nums,0,nums.length-1);
return nums;
}
public void quickSort(int[] nums,int startIndex,int endIndex){
if(startIndex >= endIndex) return;
//int pivot = partition(nums,startIndex,endIndex);
int pivot = randomizedPartition(nums,startIndex,endIndex);
quickSort(nums,startIndex,pivot-1);
quickSort(nums,pivot+1,endIndex);
}
public int randomizedPartition(int[] nums,int l,int r){
int i = new Random().nextInt(r-l+1)+l;
int temp = nums[i];
nums[i] = nums[r];
nums[r] = temp;
return partition(nums,l,r);
}
public int partition(int[] nums,int left,int right){
int p = nums[left];
int l = left;
int r = right;
while(l < r){
while(l < r && nums[r] >= p) r--;
while(l < r && nums[l] <= p) l++;
if(l < r){
int temp = nums[l];
nums[l] = nums[r];
nums[r] = temp;
}
}
nums[left] = nums[l];
nums[l] = p;
return l;
}
}
06-18
539

08-20
3642

10-12
5万+

08-20
9967
