Hallo Leute
Brauche Hilfe bei den ersten schweren Schritten mit komplexeren Algorithmen. Ich möchte ein Array mit MergeSort sortieren, nur bekomme ich in einer Zeile immer wieder ArrayOutOfBounds Fehler. Ich weiß nicht mehr weiter... Debugger versucht, Zettel und Papier.... einfach nur nervtötend
Schreiben tu ich mit BlueJ
Vielen Dank im Vorraus
Bye Alex
Brauche Hilfe bei den ersten schweren Schritten mit komplexeren Algorithmen. Ich möchte ein Array mit MergeSort sortieren, nur bekomme ich in einer Zeile immer wieder ArrayOutOfBounds Fehler. Ich weiß nicht mehr weiter... Debugger versucht, Zettel und Papier.... einfach nur nervtötend
Schreiben tu ich mit BlueJ
Vielen Dank im Vorraus
Bye Alex
Code:
public void MergeSort()
{
start();
ms(0, feld.length - 1);
zeitnahme("MergeSort");
}
public void ms(int links, int rechts)
{
if(links < rechts)
{
mitte = (links + rechts) / 2;
ms(links, mitte);
ms(mitte + 1 , rechts);
merge(links, mitte, rechts);
}
}
public void merge(int links, int mitte, int rechts)
{
n = feld.length;
tmpfeld = new int[(n + 1)/ 2];
int i;
int j;
int k;
i = 0;
j = links;
//Erste Hälfte von feld[] in tmpfeld[] kopieren
while(j <= mitte)
tmpfeld[i++] = feld[j++];
i = 0;
k = links;
//Das nächstgrößte Element zurückkopieren
while(k < j && j <= rechts)
if(tmpfeld[i] <= feld[j])
feld[k++] = tmpfeld[i++];
else
feld[k++] = tmpfeld[j++]; <-- Hier ist der Fehler ArrayOutOfBoundsExeption 25 -
weiß beim besten willen nicht wieso ich nen ungültigen Index dort habe
//Wenn Rest von tmpfeld[] vorhanden - zurückkopieren
while(k < j)
feld[k++] = tmpfeld[i++];
}