我正在尝试写一个quick sort
for 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);
}
}