原理:
首先设置最左位置的值为一个哨兵,然后设置left和right分别为数组的起始位置和终止位置。然后从right右边开始,找到一个比哨兵小的数值,设置到哨兵的位置上,然后从left左边往右开始,找到一个比哨兵大的数值,设置到right的位置上,重复如此,最后哨兵设置到left == right 位置上
代码:
import java.util.*;
public class quickSort{
public static void main(String args[]){
int[] nums = new int[]{7,6,8,4,3,6,10,2};
qsort(nums, 0, nums.length - 1);
for(int i = 0; i < nums.length; i++){
System.out.println(nums[i]);
}
}
public static void qsort(int[] nums, int left, int right){
if(left < right){
int mid = partition(nums, left, right);
qsort(nums, left, mid - 1);
qsort(nums, mid + 1, right);
}
}
public static int partition(int[] nums, int left, int right){
int pivot = nums[left];
while(left < right){
while(left < right && nums[right] >= pivot){
right--;
}
nums[left] = nums[right];
while(left < right && nums[left] <= pivot){
left++;
}
nums[right] = nums[left];
}
nums[left] = pivot;
return left;
}
}