我正在编写quicksort
类的特定变体。然而;这种快速排序的方向令我感到困惑。我已经编写了快速排序的代码,但我不理解描述。任何人都可以帮助我理解这个描述意味着变体,所以我可以敲定它吗?
描述:使用根据pivot_pos选择的枢轴实现快速排序的变体。也就是说,只要快速排序对快速排序子阵列(A,p,r)进行递归调用,它就会选择枢轴最小值(p + pivot,r)。
根据我的解释,这是说要包含在quicksort
int
值min(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);
}
}