快速排序是根据待排序数组中的某一值val,将待排序数组分割成两部分数据,前一部分数组比val小
,后一部分数组比val大,之后对每部分数据重复上述过程,最终实现待排序数组的有序性,实例如下:
public class QuickSortMain { public static void main(String[] args) { sort(); } /** * 切分待排序数组 * @param arr * @param low * @param high * @return */ static int split(int[] arr, int low, int high) { int key = arr[low]; while (low < high) { while (low < high && arr[high] >= key) high--; arr[low] = arr[high]; while (low < high && arr[low] <= key) low++; arr[high] = arr[low]; } arr[low] = key; return low; } /** * 递归切分数据 * @param arr * @param low * @param high */ static void sort(int[] arr, int low, int high) { if (low < high) { int mid = split(arr, low, high); sort(arr, low, mid - 1); sort(arr, mid + 1, high); } } static void sort(int[] arr) { sort(arr, 0, arr.length - 1); } static void sort() { int[] arr = {8, 1, 3, 3, 45, 2, 5, 1, 9, 2, 6, 7}; sort(arr); System.out.println(Arrays.toString(arr)); } }