GnomSort
Inhaltsverzeichnis |
Algorithmus
Gartenzwerge sortieren Blumentöpfe, die in einer Reihe aufgestellt sind, der Größe nach.
Sie benutzen dazu den folgenden Algorithmus:
- Beginne links und vergleiche die beiden ersten Töpfe.
- Stehen sie in der richtigen Reihenfolge gehe ein Schritt nach rechts.
- Vertausche die beiden Töpfe, wenn sie nicht in der korrekten Reihenfolge stehen, und gehe einen Schritt nach links.
Ist der Schritt nach links nicht möglich, gehe ein Schritt nach rechts.
- Wiederhole das Sortieren bis zum letzten Blumentopf.
Die Größe der Blumentöpfe wird mit Zufallszahlen festgelegt:
|
Ungeordnete Zufallszahlen: |
Geordnete Zufallszahlen: |
Hinweis: Um mehrere Zeichenflächen nutzen zu können, muss die Prozedur balkendiagramm mit einem zusätzlichen Parameter ausgestattet werden, der einer fortlaufenden Nummerierung entspricht:
(balkendiagramm <ls> ; Liste mit Zahlenwerten <nr>) ; fortlaufende Nummerierung des Balkendiagramms
Effizienz von GnomSort
Average-Case-Experimente
Wir definieren unseren GnomSort-Algorithmus mit einem "eingebauten" (Zeittakt-)Zähler:
Im Weiteren wollen wir uns nur auf die Zählergebnisse unseres "Zeittaktmessers" konzentrieren.
Dazu sollen die Wiederholungen des Experimentes automatisiert werden:
Schließlich sollen die Ergebnisse unserer empirischen Untersuchung wieder im Balkendiagramm visualisiert werden.
Achtung! Mit kleinen Wiederholraten und etwas Geduld experimentieren!
Die empirischen Untersuchungen zeigen im Mittel offensichtlich einen quadratischen Zeitaufwand von GnomSort.
Es gilt:
| average case: | T(n) = \frac{1}{2} \cdot n^2 bzw. |
| T(n) = \mathcal{O}(n^2) |
Best- und Worst-Case-Experimente
|
GnomSort: best-case |
GnomSort: worst-case |