博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速排序
阅读量:4687 次
发布时间:2019-06-09

本文共 1910 字,大约阅读时间需要 6 分钟。

public class QuickSortUtil {    public static void sort(int[] array) {        sort(array, 0, array.length - 1);    }    private static void sort(int[] array, int start, int end) {        if (end - start <= 10) {            insertSort(array, start, end);        } else {            int pivot = getPivot(array, start, end);            int partion = partionArray(array, start, end, pivot);            sort(array, start, partion - 1);            sort(array, partion + 1, end);        }    }    private static void insertSort(int[] array, int start, int end) {        for (int out = start + 1; out <= end; out++) {            int temp = array[out];            int in;            for (in = out;in > start && array[in - 1] >= temp;in--) {                array[in] = array[in - 1];                          }            array[in] = temp;        }    }    private static int getPivot(int[] array, int start, int end) {        int center = (start + end) / 2;        if (array[start] > array[end]) {            swap(array, start, end);        }        if (array[start] > array[center]) {            swap(array, start, center);        }        if (array[center] > array[end]) {            swap(array, center, end);        }        swap(array, center, end - 1);        return array[end - 1];    }    private static int partionArray(int[] array, int start, int end, int pivot) {        int pl = start;        int pr = end - 1;        while (true) {            while (array[++pl] < pivot);            while (array[--pr] > pivot);            if (pl >= pr) {                break;            } else {                swap(array, pl, pr);            }        }        swap(array, pl, pr - 1);        return pl;    }    private static void swap(int[] array, int left, int right) {        int temp = array[left];        array[left] = array[right];        array[right] = temp;    }}

转载于:https://www.cnblogs.com/leeeee/p/7276319.html

你可能感兴趣的文章