Ich versuche, Quicksort-Algorithmus zu schreiben. Ich folgte einem Online-Tutorial, das ziemlich genau das Gleiche gemacht hat, aber ich bekomme einen StackOverFlow-Fehler.Quicksort geben StackOverFlow-Fehler
public void mysort(int[] g) {
quickSort(g, 0, g.length - 1);
System.out.println(Arrays.toString(g));
}
public void quickSort(int[] nums, int low, int high) {
int i = low;
int j = high;
int pivot = nums[(low + (high - low))/2];
while (i <= j) {
while (nums[i] < nums[pivot]) {
i++;
}
while (nums[j] > nums[pivot]) {
j--;
}
while (i <= j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
i++;
j--;
}
}
System.out.println(Arrays.toString(nums));
if (low < j) {
quickSort(nums, low, j);
}
if (i < high) {
quickSort(nums, i, high);
}
}
Das Array I als Argument übergeben habe, ist [1, 2, 3, 4, 5, 5, 4, 3, 2, 1].
In der Quicksort-Methode gibt die println-Anweisung dies nach der ersten Schleife aus, [1, 4, 3, 2, 1, 2, 3, 4, 5, 5].
Was geht hier vor?
Sie einen Debugger die Schritte des Programms folgen können und sehen, wo es schief geht. – Henry