package com.kingdz.algorithm.time201702;import java.util.Arrays;/** * 快速排序 * * @author kingdz * */public class Algo15 { public static void main(String[] args) { int count = 10; int[] number = new int[count]; number = Algo13.fillArray(count, false); System.out.PRintln(Arrays.toString(number)); number = quicksort(number, 0, number.length - 1); } private static int[] quicksort(int[] number, int start, int end) { if (start < end) { int index = diversion(number, start, end); quicksort(number, start, index - 1); quicksort(number, index + 1, end); } return number; } /** * 分割函数 * * @param arr * 数组 * @param start * 起始位置 * @param end * 结束位置 * @return */ private static int diversion(int[] arr, int start, int end) { int base = arr[start]; int left = start; int right = end; while (left < right) { while (left < right && arr[right] > base) { right--; } if (left < right) { // 此次交换后所有base右边都比base大 Algo13.swap(arr, left, right); } while (left < right && arr[left] < base) { left++; } if (left < right) { // 此次交换后所有base左边都比base小 Algo13.swap(arr, left, right); } } System.out.println(Arrays.toString(arr)); return left; }}
新闻热点
疑难解答