标签:
还是写一下原理吧:
有图为证:
下图为原理示意图
package Alrithm; public class Quick { public static void sort(int[] arr, int low, int high) { int min = low;// 用于动态移动角标 int max = high;// 用于动态移动角标 if (low < high) {// 元素大于一个才进行排序 int temp = arr[low];// 定义基数 while (min < max) {// 在角标重合时跳出循环 // 新从最大值开始 while (min < max && arr[max] > temp) {// 右边的数大于基数时,max-- max--; } // 减完之后在换位置 int tmp = arr[min]; arr[min] = arr[max]; arr[max] = tmp; // 再从最小值开始 while (min < max && arr[min] < temp) { min++; } int tmp1 = arr[min]; arr[min] = arr[max]; arr[max] = tmp1; } sort(arr, low, min - 1); sort(arr, min + 1, high); } } public static void main(String[] args) { int[] arr = { 21, 32, 122, 433, 2322222, 56, 121, 565, 123 }; sort(arr, 0, arr.length - 1); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + ","); } } }
标签:
原文地址:http://www.cnblogs.com/tabchanj/p/5770897.html