class Solution {
public int[] sortArray(int[] nums) {
randomizeQuickSort(nums, 0, nums.length - 1);
return nums;
}
void randomizeQuickSort(int[] nums, int left, int right) {
if (left < right) {
int pos = randomizePartition(nums, left, right);
randomizeQuickSort(nums, left, pos-1);
randomizeQuickSort(nums, pos+1, right);
}
}
int randomizePartition(int[] nums, int left, int right) {
int povit = new Random().nextInt(right - left + 1) + left;
swap(nums, povit, right);
int i = left - 1;
for (int j = left; j < right; j++) {
if (nums[j] <= nums[right]) {
i++;
swap(nums,i, j);
}
}
swap(nums, i+1, right);
return i+1;
}
void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
快速排序的Java实现