GnomeSort

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

GnomeSort - los geht's!

Inhaltsverzeichnis

Algorithmus

In einem Garten sind Blumentö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.

 

Quelltext überprüfen:

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:

Grafische Auswertung

Wir wollen diese empirischen Ergebnise visualisieren.

Interessant werden diese Aufwandsbetrachtungen, wenn das übergebene Datenfeld bereits aufsteigend sortiert (best-case-Fall) bzw. absteigend sortiert (worst-case-Fall) ist. Das Sortieren selbst soll natürlich mit unserem GnomeSort-Algorithmus erfolgen.

Zur Gegenüberstellung nutzen wir die modifizierten Funktionen sortAufwand und experiment:

Für die Parameter der Funktion experiment gilt insbesondere:

function experiment(nr, von, bis, anz, step)
 nr   ... 1: aufsteigend sortiert / 2: absteigend sortiert
 von  ... kleinste Zufallszahl
 bis  ... größte Zufallszahl
 anz  ... Anzahl der Zufallszahlen
 step ... Schrittweite zum Variieren der Anzahl der Zufallszahlen

In den beiden Spezialfällen sind keine Wiederholungen notwendig.

GnomeSort: best-case

 

GnomeSort: worst-case

Aufgabe: Interpretiere die Ergebnisse und die beiden Diagramme.

Zurück zu BubbleSort.

Persönliche Werkzeuge