用来对数组进行排序。
分治
注意最后一次遍历,若先执行num[r] > base这个的话,则最后r == l, 且 num[r] <= base。
1 package algorithm; 2 3 /** 4 * Created by adrian.wu on 2019/2/14. 5 */ 6 public class QuickSort { 7 public void quickSort(int[] nums, int s, int e) { 8 if (s >= e) return; 9 int base = nums[s], l = s, r = e; 10 11 while (l < r) { 12 while (l < r && nums[r] > base) r--; 13 while (l < r && nums[l] <= base) l++; 14 if (l < r) { 15 int temp = nums[r]; 16 nums[r] = nums[l]; 17 nums[l] = temp; 18 } 19 } 20 nums[s] = nums[l]; 21 nums[l] = base; 22 23 quickSort(nums, s, l - 1); 24 quickSort(nums, r + 1, e); 25 } 26 }
原文:https://www.cnblogs.com/ylxn/p/10373771.html