快排过程:
代码如下:
public class QuickSort { private int partition(int[] nums, int left, int right) { //获取随机基准数 int random = rangeRandom(left, right); //小于基准数的边界 int small = left-1; //将基准数放到最后一位 swap(nums,random,right); for (int i = left;i<right;i++){ //如果该数小于基准值 if(nums[i]<nums[right]){ //边界右移 small++; if(small!=i){ swap(nums,small,i); } } } small++; swap(nums,small,right); return small; } private int rangeRandom(int start, int end) { int num = (int) (Math.random() * (end - start + 1) + start); return num; } private void swap(int[] nums, int src, int target) { int tmp = nums[src]; nums[src] = nums[target]; nums[target] = tmp; } public void quickSort(int[] nums,int left,int right){ if( nums.length == 0|| left == right){ return ; } int partitionIndex = partition(nums, left, right); if(partitionIndex>left){ quickSort(nums, left, partitionIndex-1); } if(partitionIndex<right){ quickSort(nums, partitionIndex+1, right); } } public static void main(String[] args) { int[] nums = {9,8,7,4,1,2,3,5,3,5,6}; QuickSort quickSort = new QuickSort(); quickSort.quickSort(nums,0,nums.length-1); System.out.println(Arrays.toString(nums)); } }