0
点赞
收藏
分享

微信扫一扫

【JavaDS】排序——快速排序

小禹说财 2022-03-13 阅读 72

概念

 

排序过程中的小细节

具体的 partition 的方法

partitionMethodA

 

 partitionMethodB

代码参考

private static int partitionMethodA(long[] array, int from, int to) {
        long pivot = array[to];

        int left = from;
        int right = to;

        while (left < right) {

            while (left < right && array[left] <= pivot) {
                left++;
            }

            while (left < right && array[right] >= pivot) {
                right--;
            }

            long t = array[left];
            array[left] = array[right];
            array[right] = t;
        }

        long t = array[to];
        array[to] = array[left];
        array[left] = t;


        return left;
    }



    private static int partitionMethodB(long[] array, int from, int to) {
        long pivot = array[to];
        int left = from;
        int right = to;

        while (left < right) {
            while (left < right && array[left] <= pivot) {

                right--;
            }
            array[right] = array[left];

            while (left < right && array[right] >= pivot) {

                left++;
            }
            array[left] = array[right];
        }
        array[left] = pivot;
        return left;
    }

 

举报

相关推荐

0 条评论