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;
}
}
手撕快排奥
本文详细介绍了一种经典的排序算法——快速排序的Java实现,包括quicksort函数、randomizedPartition函数和关键的partition过程。通过随机化pivot选择,提升排序效率。适合理解排序算法和深入学习Java编程。
360

被折叠的 条评论
为什么被折叠?



