Hallo allerseits!
Es geht darum, dass ich eine Liste an Elementen der Größe nach sortiert werden muss. Dabei DARF KEINE fertige Routine der Java-Bibliothek entnommen werden und muss eigenständig implementiert werden.
Dabei habe ich mir überlegt, dass ich ja zwei benachbarte Elemente jeweils vertauschen kann und zwar solange bis das (k+1)-te Element größer als k-tes Element FÜR ALLE k<=liste.length.
Mein Java-Code lautet:
Das Problem:
Ich rätsle schon seit geraumer Zeit welche Bedingung ich der der äußersten Schleife füttern soll.
Ich weiß nicht, wie ich beibringen kann, dass er erkennen kann, wenn die Liste fertig sortiert ist. Ich nehme an, dass er ungünstigerweise so viele Fälle durchlaufen muss, wie es das Worst-Case Szenario offenbart. Gibt es eine Optimierung? Wie lautet hier überhaupt der Worst-Case? Ich nehme an, dieser liegt (genau) dann vor, wenn die Elemente in umgekehrter Reihenfolge darliegen. Also müsste ich die Anzahl der Schritte dafür überlegen und dies als Bedingung formulieren.
Meine Frage aber: Wie kann ich mir dies allgemein überlegen, etwa, wenn das Array mit Zufallszahlen gefüllt ist, Wie viele Schritte sind dann nötig, bis die Liste in eine geordneten Reihenfolge gebracht wird? :rtfm:
Es geht darum, dass ich eine Liste an Elementen der Größe nach sortiert werden muss. Dabei DARF KEINE fertige Routine der Java-Bibliothek entnommen werden und muss eigenständig implementiert werden.
Dabei habe ich mir überlegt, dass ich ja zwei benachbarte Elemente jeweils vertauschen kann und zwar solange bis das (k+1)-te Element größer als k-tes Element FÜR ALLE k<=liste.length.
Mein Java-Code lautet:
Java:
import java.util.Arrays;
public class Sortieralgorithmus {
// static double sortieren(int[] array ) {
public static void main(String[] args) {
int i = 0;
int[] array = { 5, 7, 3, 2, 4, 6, 9, 8, 1 };
int[] hilfsarray = new int[array.length];
while (i < array.length) {
hilfsarray[i] = array[i];
i++;
}
while (array[i + 1] < array[i] ||??????????) {
while (i < array.length - 1) {
if (array[i] > array[i + 1]) {
vertausche(array[i], array[i + 1]);
}
i++;
}
i = 0;
}
System.out.println(Arrays.toString(array));
}
}
Das Problem:
Ich rätsle schon seit geraumer Zeit welche Bedingung ich der der äußersten Schleife füttern soll.
Ich weiß nicht, wie ich beibringen kann, dass er erkennen kann, wenn die Liste fertig sortiert ist. Ich nehme an, dass er ungünstigerweise so viele Fälle durchlaufen muss, wie es das Worst-Case Szenario offenbart. Gibt es eine Optimierung? Wie lautet hier überhaupt der Worst-Case? Ich nehme an, dieser liegt (genau) dann vor, wenn die Elemente in umgekehrter Reihenfolge darliegen. Also müsste ich die Anzahl der Schritte dafür überlegen und dies als Bedingung formulieren.
Meine Frage aber: Wie kann ich mir dies allgemein überlegen, etwa, wenn das Array mit Zufallszahlen gefüllt ist, Wie viele Schritte sind dann nötig, bis die Liste in eine geordneten Reihenfolge gebracht wird? :rtfm: