class Solution {
public int[] sortArray(int[] nums) {
if(nums.length==1)return nums;
int n = nums.length;
quickSort(nums,0,n-1);
return nums;
}
public void quickSort(int[]nums,int l,int r){
if(l<r){
int s = (int) (Math.random()*(r-l+1));
swap(nums,l+s,r);
int[] part = partition(nums,l,r);
quickSort(nums,l,part[0]-1);
quickSort(nums,part[1]+1,r);
}
}
public int[] partition(int[] nums, int l,int r){
int xiaoyu = l-1;
int dayu = r;
while (l<dayu){
if(nums[l]<nums[r]) {
swap(nums, ++xiaoyu, l++);
}else if(nums[l]>nums[r]){
swap(nums,--dayu,l);
}else l++;
}
swap(nums,dayu,r);
return new int[]{xiaoyu+1,dayu};
}
public void swap(int[] nums , int i, int j){
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
}
手撕快排