当给出以下分区方法时,我需要在java中实现快速排序:

private static int partition (int[] A, int low, int high)
{
int pivot, tmp, l, r;
pivot = low + qsr.nextInt(high - low + 1);
l = low;
r = high-1;
tmp = A[pivot];
A[pivot] = A[high];
A[high] = tmp;
pivot = high;
do
    {
    tmp = A[l];
    A[l] = A[r];
    A[r] = tmp;
    for(; l <= r && A[l] < A[pivot]; ++l)
        ;
    for(; l <= r && A[pivot] < A[r]; --r)
        ;
    }
while (l <= r);
tmp = A[l];
A[l] = A[pivot];
A[pivot] = tmp;
return l;
}

它从低和高索引之间的数组中选择一个随机元素作为枢轴 . 然后对枢轴的左侧进行排序,使其包含比枢轴更小的值,以及右侧,使其仅包含更大的值 . 排序仅在低值和高值之间完成 . 最后,返回pivot的索引 .

如果函数将低值和高值作为参数,则快速排序将非常容易实现,但它不会:

public static int[] quickSort (int[] table)
{return table;}

所以这有点毛茸茸的问题 . 正如我所看到的,我要么必须创建一个存储索引的数组,要么以某种方式将数组拆分(如果可能的话,不确定),然后递归调用该函数 .

有关如何创建算法的任何想法?