Hello Stackoverflow社区,
我正在为我的算法类做一个作业
我们应该实现一个快速排序算法,它使用数组的随机元素作为枢轴
我尝试使用Random和Math实现这一点,但在这两种情况下,当我尝试在方法printField中打印字段时,我会遇到异常。
我在哪里做错了什么?我猜测我在递归使用该方法时遇到了问题,但我不知道。
这是我的代码:
public static void quickSort(int[] field, int left, int right)
{
if (field== null || field.length == 0)
return;
if (left >= right)
return;
// pick the pivot
int middle = left + (right - left) / 2;
int pivot;
if(field.length>1){
pivot = ((int) Math.random()) % field.length;
pivot = field[pivot];}
else
{
pivot = field[0];
}
//int pivot = field[middle];
// make left < pivot and right > pivot
int i = left, j = right;
while (i <= j) {
while (field[i] < pivot) {
i++;
}
while (field[j] > pivot) {
j--;
}
if (i <= j) {
int temp = field[i];
field[i] = field[j];
field[j] = temp;
i++;
j--;
}
printField(field);
System.out.println("");
}
// recursively sort two sub parts
if (left < j)
quickSort(field, left, j);
if (right > i)
quickSort(field, i, right);
}
//--EDIT--
//printField method
public static void printField (int[] field)
{
for(int i = 0; i<field.length; i++)
{
System.out.print(""+field[i]);
if(i!=field.length-1)
{
System.out.print(", ");
}
else
{
System.out.print(";");
}
}
}
谢谢你的帮助!
祝你有个愉快的一天!
莫利
修改
1)这是我得到的例外:
Exception
2)在代码引用中,现在我实现了printField()方法