对作业的快速排序说明

时间:2014-03-12 05:40:47

标签: java sorting pivot quicksort

我正在编写quicksort类的特定变体。然而;这种快速排序的方向令我感到困惑。我已经编写了快速排序的代码,但我不理解描述。任何人都可以帮助我理解这个描述意味着变体,所以我可以敲定它吗?


描述:使用根据pivot_pos选择的枢轴实现快速排序的变体。也就是说,只要快速排序对快速排序子阵列(A,p,r)进行递归调用,它就会选择枢轴最小值(p + pivot,r)。

根据我的解释,这是说要包含在quicksort intmin(p + pivot, r)的if语句中。它将使用表示此值的pivot对数组进行分区,并使用此值快速排序数组。

public static int partition(int[] a, int p, int r)
{
    int x = a[r];
    int i = p - 1;
    for( int j = p; j <= r - 1; j++)
    {
        if(a[j] <= x)
        {
            i++;
            swap(a, i, j);
        }
    }
    swap(a, i + 1, r);
    return i + 1;
}

public static void quick_sort(int[] a, int p, int  r)
{
    if(p < r)
    {
        int q = partition(a, p, r);
        quick_sort(a, p, q - 1);
        quick_sort(a, q + 1, r);
    }
}

0 个答案:

没有答案