java实现快速排序
一、基本思路
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。(翻译为白话就是:把一个数组以其中任意一个数为基数比较大小分为两部分--“大于区”、“小于区”,完了递归操作,核心思想就是二分思想、递归算法)
二、图片解析
截图来自于视频截图:https://www.iqiyi.com/w_19rtz1oc1t.html
三、代码实现
1 /** 2 * 3 * @Title : quikSort @Description: 快速排序测试代码 @param arr : void @author :manzi 4 * Create Date : 2019年4月23日 下午8:08:24 @throws 5 */ 6 public static void quikSort(int[] arr, int left, int right) { 7 if (left > right) { 8 return; 9 } 10 //基数设置为数组第一个数 11 int x = arr[left]; 12 int i = left; 13 int j = right; 14 while (i < j) {//比较大小 15 while (i < j && arr[j] >= x) { 16 j--; 17 } 18 if (i < j) { 19 arr[i] = arr[j]; 20 i++; 21 } 22 while (i < j && arr[i] <= x) { 23 i++; 24 } 25 if (i < j) { 26 arr[j] = arr[i]; 27 } 28 arr[i] = x; 29 //递归小于基数部分 30 quikSort(arr, left, i - 1); 31 //递归大于基数部分 32 quikSort(arr, i + 1, right); 33 34 } 35 36 }