Ich habe Quick-Code wie folgt geschrieben. Die Sortierung nimmt die mittlere Zahl als Pivot:QuickSort geben Ausnahme im Thread "Haupt" java.lang.StackOverflowError
import java.util.Arrays;
public class QuickSort {
public static void main(String[] args) {
int[] numbers = {3, 6, 9, 1, 34};
int low = 0;
int high = numbers.length - 1;
quicksort(numbers, low, high);
}
static void quicksort(int[] arr, int low, int high) {
int i = low;
int j = high;
int middle = arr[(low + high)/2];
while(i < j) {
while(arr[i] < middle) {
i++;
}
while(arr[j] > middle) {
j--;
}
if(i <= j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
if(low < j) {
quicksort(arr, low, j);
}
if(i < high) {
quicksort(arr, i, high);
}
System.out.println(Arrays.toString(arr));
}
}
Allerdings, nach dem Ausführen des Codes bekomme ich stackoverflow Ausnahme. Es sagt Exception in thread "main" java.lang.StackOverflowError
Exception in thread "main" java.lang.StackOverflowError
at QuickSort.quicksort(QuickSort.java:47)
at QuickSort.quicksort(QuickSort.java:47)
at QuickSort.quicksort(QuickSort.java:47)
at QuickSort.quicksort(QuickSort.java:47)
at QuickSort.quicksort(QuickSort.java:47)
at QuickSort.quicksort(QuickSort.java:47)
at QuickSort.quicksort(QuickSort.java:47)
Bitte helfen Sie mir herauszufinden, was beim Betrieb des obigen Code falsch sein könnte.
bearbeitet nur den Pfosten, und voller Fehler-Stack – meallhour
https://examples.javacodegeeks.com/java-basics/exceptions/java-lang-stackoverflowerror-how-to-solve-stackoverflowerror/ –