0

我正在尝试写一个quick sortfor Strings。我编写了代码,它在我运行程序时工作。我能够成功地对数组进行排序。应用快速排序时,将数组与0 - (x - 1)和分开(x + 1) - y,其中 x 是枢轴位置,y 是数组的结尾。我希望能够在我的 main 方法中选择自己的枢轴,而不是不断地使用数组的最后一个条目作为枢轴。

问题是,我想不出一种方法来应用它。我尝试将快速排序的调用编辑为,quicksort(blah, 0, pivot_position)并将我的快速排序方法编辑为quicksort(list, q + 1, list.length - 1). 它运行,但未排序。我可以得到任何帮助来解决这个问题吗?谢谢你。

*此外,这一切都是通过终端运行的。

public static void quicksort(String[] list, int p, int r)
{
    if(p < r)
    {
        int q = partition(list, p, r);
        quicksort(list, p, q - 1);
        quicksort(list, q + 1, r); //quicksort(list, q + 1, list.length - 1)
    }
}
public static int partition(String[] list, int p, int r)
{
    String x = list[r];
    int i = p - 1;
    for(int j = p; j <= r - 1; j++)
    {
        if(list[j].compareTo(x) <= 0)
        {
            i++;
            swap(list, i, j);
        }
    }
    swap(list, i + 1, r);
    return i + 1;   
}
public static void main(String[] args)
{
    int pivot_position = Integer.parseInt(args[1]);
    String[] blah = [a, zy, o, z, je];
    quicksort(blah, 0, blah.length - 1); // quicksort(blah, 0, pivot_position)
    for(String i : blah)
    {
        System.out.println(i);
    }
}
4

0 回答 0