[英]Quicksort in Java
我应该在Java中做一个快速排序算法来对数组{50,20,65,30,75,25,90}进行排序。 这是我到目前为止的内容:
public class QuickSort {
public static int partition(int arrayName[], int down, int up){
int i = down, j = up;
int temp;
int pivot = arrayName[(down + up) / 2];
while (i <= j){
while (arrayName[i] < pivot)
i++;
while (arrayName[j] > pivot)
j--;
if (i <= j){
temp = arrayName[i];
arrayName[i] = arrayName[j];
arrayName[j] = temp;
i++;
j--;
}
}
return i;
}
public static void main(String[] args) {
int [] arrayName = {50, 20, 65, 30, 75, 25, 90};
System.out.println(partition(arrayName, down, up));
}
}
我在打印语句上遇到了一个错误(似乎对它们有很多麻烦),该错误指出上下无法解决为变量。 如何解决它,以便我可以成功打印排序列表?
这是因为您尚未在main
方法中定义任何命名为down
和up
变量。 您应该指定值而不是这些名称。
您将索引超出范围,
因为up
和down
未初始化,因此在Java中将它们设为0
所以下降到j
:
while(arrayName[j]<pivot){ //<--- this will thow exception as j starts at 0
j--;
导致-1,并且访问arrayName[-1]
处的数组超出范围。
您的partition
方法返回一个int
。 相反,请更改您的方法主体,使其返回新排序的数组(并确保您也更改了方法声明中的返回类型,否则会得到错误)。 此外,您需要定义up
和down
的main
方法。
例如:
public static int[] partition(...)
{
...
return arrayname;
}
编辑:此外,您可能需要使用Arrays.toString()
正确输出数组(自从我使用Java以来已经有一段时间了)。 例如:
System.out.println(Arrays.toString(partition(arrayName, up, down)));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.