class Solution {
public int[] sortArray(int[] nums) {
quickSort(nums,0,nums.length - 1);
return nums;
}
public void quickSort(int[] a, int l,int r){
int q = randomizedPartition(a,l,r);
if(q > l) quickSort(a,l,q - 1);
if(q < r)quickSort(a,q + 1,r);
}
public int randomizedPartition(int[] nums, int l, int r) {
int i = new Random().nextInt(r - l + 1) + l; // 随机选一个作为我们的主元
swap(nums, r, i);
return partition(nums, l, r);
}
public int partition(int[] a,int l,int r){
int x = a[r];
int i = l - 1;
for(int j = l; j < r;j++){
if(a[j] < x) {
i++;
swap(a,i,j);
}
}
swap(a,i+1,r);
return i + 1;
}
public void swap(int[] a,int l,int r){
int temp = a[r];
a[r] = a[l];
a[l] = temp;
}
}
手撕快排奥