为什么QuickSort中的中三分区会在返回枢轴值之前隐藏枢轴?

时间:2014-06-29 13:56:16

标签: algorithm quicksort median

我对这个中间3函数的快速排序感到困惑(它来自Mark Allen Weiss的数据结构和C 中的算法分析):

ElementType
Median3(ElementType A[], int Left, int Right){
    int Center = (Left + Right)/2;

    if(A[Left] > A[Center]{
        Swap(&A[Left], &A[Center]);
    }
    if(A[Left] > A[Right]{
        Swap(&A[Left], &A[Right]);
    }
    if(A[Center] > A[Right]{
        Swap(&A[Center], &A[Right]);
    }

    Swap( &A[Center], &A[Right - 1]);  /* Hide pivot */
    return A[right - 1];
}

为什么此功能在返回枢轴值之前隐藏枢轴?

我的想法是它想要在递归快速排序中减少枢轴的影响。因为每次Quick Sort使用左/右部分对其自身进行递归调用时,中心元素将是边缘。

是吗?希望有人可以帮助我。 THX〜!

0 个答案:

没有答案