Schattenfänger
Lt. Junior Grade
- Registriert
- Nov. 2010
- Beiträge
- 273
Hallo,
Ich wollte QS implementieren, allerdigns bekomme ich immer eine Fehlermeldung wobei mir klar ist was sie bedeuted aber nicht rausfinde wo der Fehler entsteht (ja, bereits durchdebuggt) bzw wo das j plötzlich so hoch gesetzt wird.
Wobei ich bei der Ausgabe sehe:. i: 878 j: 893 und danach:
i: 892 j: 1689148175
Habe ich das richtig verstanden, dass nachdem i und j übergeelaufen sind, i mit dem pivot getauscht wird? (Weshalb?)
offtopic: Muss man um Java 8 Streams und Co verwenden zu können irgendwas spezielles in der IDE einstellen? Mein JDK ist 8 und Project Language Level ebenfalls, aber IntelliJ regt sich über Java 8 Befehle auf...
mfg
Ich wollte QS implementieren, allerdigns bekomme ich immer eine Fehlermeldung wobei mir klar ist was sie bedeuted aber nicht rausfinde wo der Fehler entsteht (ja, bereits durchdebuggt) bzw wo das j plötzlich so hoch gesetzt wird.
Code:
private void swap(int i, int j, int[] data) {
System.out.println("i: "+i+" j: "+j);
int x = data[i];
data[i] = data[j]; //FEHLER
data[j] = x;
}
private void Quicksort(int[] data,int left,int right){
if(data.length<=1)return;
int pivot = data[data.length-1];
int i=left;
int j=right;
while(i<=j){
while(data[i]<pivot){
i++;
}
while(data[j]>pivot){
j--;
}
if(i<=j){
swap(i,j,data);
i++;
j--;
}
}
swap(i,pivot,data);
Quicksort(data,0,j);
Quicksort(data,i,data.length);
}
Wobei ich bei der Ausgabe sehe:. i: 878 j: 893 und danach:
i: 892 j: 1689148175
Habe ich das richtig verstanden, dass nachdem i und j übergeelaufen sind, i mit dem pivot getauscht wird? (Weshalb?)
offtopic: Muss man um Java 8 Streams und Co verwenden zu können irgendwas spezielles in der IDE einstellen? Mein JDK ist 8 und Project Language Level ebenfalls, aber IntelliJ regt sich über Java 8 Befehle auf...
mfg