B
blackfire
Gast
Hallo,
Ich habe ein Problem, ich lese eine Arraylänge vom Benutzer ein in der Methode quicksort (bei teile ist daten automatisch 9)
Ja und ich habe ein Problem:
while((pivot<=daten[j]) && (j>links)) { //wenn pivot kleiner gleich , die j´te Zahl vom Array ist
// j größer links ist
j=j-1; //wird j um 1 verringert
}
Als fehler meldung steht:
java.lang.ArrayIndexOutOfBoundsException: -1
danke im vorraus
Ich habe ein Problem, ich lese eine Arraylänge vom Benutzer ein in der Methode quicksort (bei teile ist daten automatisch 9)
Ja und ich habe ein Problem:
while((pivot<=daten[j]) && (j>links)) { //wenn pivot kleiner gleich , die j´te Zahl vom Array ist
// j größer links ist
j=j-1; //wird j um 1 verringert
}
Als fehler meldung steht:
java.lang.ArrayIndexOutOfBoundsException: -1
Code:
public static int teile(int[] daten, int links, int rechts) {
int i, j, pivot, ersatzi, ersatzj, ersatzr=0;
i=links;
j=rechts-1;
pivot=daten[rechts]; // pivot ist die letzte Zahl vom Array
do{
while((daten[i]<=pivot) && (i<rechts)) { //wenn die 1 Zahl vom Array kleiner gleich pivot ist
// und i kleiner rechts ist
i=i+1; // wird i um 1 erhöht
}
while((pivot<=daten[j]) && (j>links)) { //wenn pivot kleiner gleich , die j´te Zahl vom Array ist
// j größer links ist
j=j-1; //wird j um 1 verringert
}
if(i<j) { // Wenn i kleiner als j ist
ersatzi=daten[i]; // wird die j´te Zahl vom Array und die i´te Zahl vom Array ausgetauscht
ersatzj=daten[j];
daten[j]=ersatzi;
daten[i]=ersatzj;
}else{}
}while(i<j); // Solange i<j ist
ersatzi=daten[i]; // Nochmals ausgetauscht
ersatzr=daten[rechts];
daten[rechts]=ersatzi;
daten[i]=ersatzr;
return i; // i wird zurückgeliefert
}
public static void quicksort(int[] daten, int links, int rechts) {
int teiler=0;
for(int z1=0; daten.length-1>z1; z1++) {
daten[z1]=(int)(Math.random()*100 + 1);
}
if(links<rechts) {
teiler=teile(daten, links, rechts);
quicksort(daten, links, teiler-1);
quicksort(daten, teiler+1, rechts);
}
}
danke im vorraus