Hallo Leute,
im Informatikunterricht haben wir vor nicht allzu langer mit Java begonnen und nun wurde mir Aufgabe gestellt, ein Programm zu entwerfen, welches die Effizienz von Sortieralgorithmen miteinander vergleicht. Dazu muss ich unter anderem eine Klasse für Quicksort schreiben, welche ein zufälliges Integer Array ordnet. In einem Formular wird dabei die Länge des Array, sowie der kleinste und größte Wert eingegeben. Die Methode wird mit einem Buttonclick aufgerufen. Nun hängt sich jedoch das Programm auf, wenn man auf den Button drückt, obwohl keine Fehlermeldungen angezeigt werden.
Hier ist der Quelltext für die Klasse:
und so wird die Methode innerhalb der Buttonprozedur aufgerufen (A ist vom Typ int[]):
A = Quick.Quicksort(0, A.length - 1, A);
Hätte irgendjemand vielleicht eine Idee, wieso das Programm nicht funktioniert?
Vielen Dank schon einmal im Voraus
im Informatikunterricht haben wir vor nicht allzu langer mit Java begonnen und nun wurde mir Aufgabe gestellt, ein Programm zu entwerfen, welches die Effizienz von Sortieralgorithmen miteinander vergleicht. Dazu muss ich unter anderem eine Klasse für Quicksort schreiben, welche ein zufälliges Integer Array ordnet. In einem Formular wird dabei die Länge des Array, sowie der kleinste und größte Wert eingegeben. Die Methode wird mit einem Buttonclick aufgerufen. Nun hängt sich jedoch das Programm auf, wenn man auf den Button drückt, obwohl keine Fehlermeldungen angezeigt werden.
Hier ist der Quelltext für die Klasse:
Java:
public class Quick extends Oberflaeche
{
public Quick()
{
super("");
}
public static int[] Quicksort(int lowerbound, int upperbound, int[] zusortieren)
{
int i = lowerbound;
int j = upperbound;
//upper and lowerbound Indizes für Teillisten
int pivot = zusortieren[i + (j - i ) / 2];
//Pivotelement wird in der Mitte von upper und lowerbound festgelegt
while (i <= j)
{
while (zusortieren[i] < pivot) //von links überprüft, welche Elemente > als Pivot sind
i++;
while (zusortieren[j] > pivot) //von rechts überprüft, welche Elemente kleiner als Pivot sind
j--;
if (i < j)
/*
*wenn ein Element rechts und links gefunden wurden, werden sie getauscht
*Ergebnis: Elemente links von Pivot kleiner als Pivot, rechts größer
*/
{
int temp = zusortieren[i];
zusortieren[i] = zusortieren[j];
zusortieren[j] = temp;
}
}
//Array wird in zwei Teile zerlegt, eins links vom Pivot, eins rechts
//Teilarrays nach selbem Prinzip geordnet
if (lowerbound < j)
Quicksort(lowerbound, j, zusortieren);
if (i < upperbound)
Quicksort(i, upperbound, zusortieren);
//geordnetes Array wird zurückgegeben
return zusortieren;
}
}
und so wird die Methode innerhalb der Buttonprozedur aufgerufen (A ist vom Typ int[]):
A = Quick.Quicksort(0, A.length - 1, A);
Hätte irgendjemand vielleicht eine Idee, wieso das Programm nicht funktioniert?
Vielen Dank schon einmal im Voraus