Quicksort以第一个和最后一个元素作为枢轴

时间:2016-10-26 16:29:57

标签: java sorting quicksort

这里是使用Hoare方案的快速排序的分区部分,使用第一个元素作为枢轴,最后一个元素作为枢轴:

private static int partitionUseLoAsPivot(int[] arr, int left, int right) {
    int pivot = arr[left];

    while (left < right) {
        while (arr[right] > pivot) {
            right--;
        }
        while (arr[left] < pivot) {
            left++;
        }
        if (left < right) {
            swap(arr, left, right);
            left++;
            right--;
        }
    }
    return right;
}

private static int partitionUseHiAsPivot(int[] arr, int left, int right) {
    int pivot = arr[right];

    while (left <= right) {
        while (arr[left] < pivot) {
            left++;
        }
        while (arr[right] > pivot) {
            right--;
        }
        if (left <= right) {
            swap(arr, left, right);
            left++;
            right--;
        }
    }
    return right;
}

left < rightleft <= right条件外,它们几乎完全相同。为什么呢?

0 个答案:

没有答案