快速排序 Java 实现

/**
     * 获取分区下标
     *
     * @param source 源数组
     * @param start  起始位置
     * @param end    结束位置
     * @return 分区下标
     */
    private int partition(int[] source, int start, int end) {
        int m = start;
        int value = source[m];
        while (start <= end) {
            //判断左移还是右移
            if ((start < m) && (source[start] > value) || ((start > m) && (source[start] < value))) {
                swap(source, m, start);
                //交换位置
                int t = m;
                m = start;
                start = t;
            }
            start++;
        }
        return m;
    }

    private void swap(int[] source, int a, int b) {
        int temp = source[a];
        source[a] = source[b];
        source[b] = temp;
    }

    // 排序方法
    private void sort(int[] source, int start, int end) {
        int m = partition(source, start, end);
        if (end - start <= 1) {
            return;
        }
        sort(source, start, m - 1);
        sort(source, m + 1, end);
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容