Quicksort随机数转换导致stackoverflow异常

时间:2017-04-16 15:10:08

标签: random quicksort

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()方法

0 个答案:

没有答案