class Solution {
//快速排序
public void sortColors(int[] nums) {
quickSort(nums, 0, nums.length-1);
}
public void quickSort(int[] nums, int left, int right){
if(left>right){
return;
}
int pivot = nums[left];
int l=left, r=right;
while(l<r){
while(pivot<=nums[r] && l<r){ //这边顺序不能反了,先减r,后加l,这样不会导致先处理r,保证l代表的元素小于r的元素,如[0,1]
--r;
}
while(pivot>=nums[l] && l<r){
++l;
}
if(l<r){
swap(nums, l, r);
}
}
swap(nums, left, l);
quickSort(nums, left, l-1);
quickSort(nums, l+1, right);
}
public void swap(int[] nums, int i, int j){
int temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;
}
}
java快速排序
最新推荐文章于 2024-08-16 23:08:28 发布
该代码实现了一个Java类Solution,包含一个用于快速排序的sortColors方法和辅助的quickSort方法。快速排序通过选择一个基准值(pivot),然后将数组分为小于基准和大于基准的两部分,递归地对这两部分进行排序。此外,还有一个swap方法用于交换数组中的元素。
摘要由CSDN通过智能技术生成