GnomeSort
Algorithmus
In einem Garten sind Bumentöpfe in einer Reihe aufgestellt. Gartenzwerge sollen sie nun der Größe nach aufsteigend sortieren. Sie benutzen dazu den folgenden Algorithmus:
- Beginne links und vergleiche die beiden ersten Töpfe.
- Wenn sie nicht in der korrekten Reihenfolge stehen, vertausche die beiden Töpfe und gehe einen Schritt nach links.
Ist der Schritt nach links nicht möglich, gehe einen Schritt nach rechts.
- Gehe auch in jedem anderen Fall einen Schritt nach rechts.
- Wiederhole diesen Vergleich benachbarter Töpfe bis zum letzten Blumentopf.
Die Größe der Blumentöpfe wird mit Zufallszahlen festgelegt:
Auf die explizite Ausgabe unsortierter bzw. sortierter Datenfelder wollen wir im Weiteren verzichten. Uns soll die Visualisierung im Balkendiagramm genügen.
|
Ungeordnete Zufallszahlen: |
Geordnete Zufallszahlen: |
Aufwandsbetrachtungen
Empirische Untersuchungen
Wir wollen hier stark vereinfacht annehmen, dass jeder Vergleich zweier benachbarter Feldelemente, ihr möglicher Tausch sowie das Weiterrücken nach links bzw. rechts je einem Zeittakt entsprechen.
Diese Zeittakte werden wieder in Abhängigkeit der Anzahl der zu sortierenden Feldelemente ermittelt.
Auch hier soll der Mittelwert aus Mehrfachanwendungen der Funktion sortAufwand ermittelt werden:
Zurück zu BubbleSort.