Open Source, Open Future!
  menu
107 文章
ღゝ◡╹)ノ❤️

快速排序

思路

图示

代码

算法

    /**
     * 快速排序
     *
     * @param data
     */
    public static void quickOrder(int[] data) {
        quickOrder(data, 0, data.length - 1);
    }

    private static void quickOrder(int[] data, int start, int end) {
        if (start >= end) {
            return;
        }
        int left = start, right = end + 1, mark = data[start];
        while (left < right) {
            while (left < right && data[--right] > mark) {
            }
            while (left < right && data[++left] < mark) {
            }
            if (left < right) {
                exchange(data, left, right);
            }
        }
        exchange(data, start, left);
        quickOrder(data, start, left - 1);
        quickOrder(data, right + 1, end);
    }

    private static void exchange(int[] data, int i, int j) {
        int temp = data[i];
        data[i] = data[j];
        data[j] = temp;
    }

测试

    public static void main(String[] args) {
        int[] data = {5, 3, 4, 1, 2};
        quickOrder(data);
        System.out.println(Arrays.toString(data));
    }

结果

[1, 2, 3, 4, 5]