Sortieren Sie die roten Steine in aufsteigender und anschliessend in absteigender Reihenfolge. Beachten Sie die Anzahl notwendiger Schritte.
Bedienung: Mit rechtem Mausklick kann der aktive Stein (weisser Hintergrund) für die grün markierte Position vorgemerkt werden. Ein linker Mausklick springt zum nächsten Stein, ohne den aktuellen vorzumerken. Der vorgemerkte Stein ist gelb markiert.
Beim Selection-Sort wird jeweils das grösste oder kleinste Element ausgewählt und an den Beginn der Folge gesetzt. Dies wird in jedem Schritt mit einem um ein Element kleineren Bereich gemacht. Das kleinste oder grösste Element wird gesucht, indem das bin anhin kleinste bzw. grösste angetroffene Element markiert wird. Der Aufwand von Selection-Sort für n Elemente lässt sich wie folgt berechnen:
(n-1) + (n-2) + ... + 3 + 2 + 1 = (n-1)*n/2
Der Selectionsort-Algorithmus gehört daher zur Komplexitätsklasse 0(n2). Vgl. die sogenannte O-Notation
Hinweis: Ein Computer kann pro Arbeitsschritt nur die Grösse von zwei Steinen vergleichen. In diesem Fall die Grösse des aktiven Steins mit der Grösse des gelb markierten Steins.
Sortieren Sie die roten Steine in aufsteigender und anschliessend in absteigender Reihenfolge. Beachten Sie die Anzahl notwendiger Schritte.
Bubble-Sort wird auch Sortieren durch Aufsteigen genannt, da die Elemente wie Blasen im Wasser aufsteigen. In der Praxis wird Bubblesort kaum eingesetzt, da andere Verfahren schneller sind. Der Aufwand von Bubble-Sort wächst mit der Anzahl-Spielsteinen n im Quadrat: O(n2). D.h. bei doppelt so vielen Steinen dauert das Sortieren rund viermal so lange. Dieses Verhalten wird mit der sogenannten O-Notation festgehalten.
Hinweis: Man stellt fest, dass der Computer pro Schritt nur die Grösse von zwei Steinen vergleichen kann, und die anderen Steine nicht im "Blick" hat. Dies zeigt die typische Funktionsweise eines Computers.
Das Vorgehen ist mit dem Aufnehmen von Karten bei einem Kartenspiel vergleichbar. Die erste Karte wird aufgenommen und an die erste Stelle gesetzt. Nach dem Aufnehmen einer weiteren Karte wird diese von rechts nach links mit den bereits einsortierten Karten verglichen und bei der richtigen Position eingefügt. Die bereits aufgenommenen Karten sind zu jedem Zeitpunkt sortiert. In der Simulation sind die noch nicht aufgenommenen Karten dunkel dargestellt.
Der Aufwand von Insertion-Sort wächst mit der Anzahl-Spielsteinen n im Quadrat: O(n2). D.h. bei doppelt so vielen Steinen dauert das Sortieren rund viermal so lange. » O-Notation
In welcher Reihenfolge die Objekte vorliegen hat einen Einfluss auf den Aufwand. Testen Sie dies, indem Sie die Steine einmal aufsteigend und einmal absteigend sortieren. Im Besten Fall ist Insertion-Sort sogar linear mit O(n), d.h. schneller als komplizierte Sortierverfahren wie Quick-Sort und Merge-Sort.
Aufwandberechnung mit O(n2):
Anzahl Objekte | Anzahl Schritte |
---|---|
4 | 16 |
8 | 64 |
16 | 256 |
32 | 1'024 |
64 | 4'096 |
128 | 16'384 |
256 | 65'536 |
Sortieren Sie die roten Steine und beachten Sie die Anzahl notwendiger Schritte. Findet sich ein Unterschied zwischen aufsteigendem und absteigendem Sortieren?
Vorbild für den Tournamentsort ist ein Tournierspielplan. Es treten immer zwei Objekte gegeneinander an und der Gewinner rückt eine Ebene hoch in Richtung Halbfinal und Final. Die Sieger aus dem Final werden separat aufgereiht und sind bei korrektem Turnierverlauf durch dieses Verfahren sortiert.
Der Aufwand des Tournament-Sort wächst mit der Anzahl-Spielsteinen n logarithmisch: O(n * log2(n)). » O-Notation
Aufwandberechnung gemäss dieser Formel:
Anzahl Objekte | Anzahl Schritte |
---|---|
4 | 8 |
8 | 24 |
16 | 64 |
32 | 160 |
64 | 384 |
128 | 896 |
256 | 2'048 |
Diese Sortieranweisung ist rekursiv, d.h. sie nimmt auf sich selber Bezug (vgl. 2. Teil von Pkt. ii). Zudem wird das Gesamtproblem in möglichst kleine Teilprobleme zerlegt. Die Methode ein Problem durch Zerlegung in Teilprobleme zu lösen wird "divide et impera"-Prinzip genannt.
Der Aufwand des Merge-Sort wächst mit der Anzahl-Karten n logarithmisch: O(n * log2(n)). » O-Notation
Diese Sortiermethode ist rekursiv, d.h. sie nimmt auf sich selber Bezug (vgl. 2. Teil von Pkt. iii). Sie verwendet das Prinzip "divide et impera".
Der Aufwand des Quick-Sort wächst mit der Anzahl Elemente n logarithmisch: O(n * log2(n)). » O-Notation
Äusserst schön umgesetzte Animation von sorting.at.
Die O-Notation gibt die Anzahl der Elementarschritte in Abhängigkeit von der Anzahl der Eingangbedaten an. In der Informatik spricht man von der Komplexität eines Problems. Man sagt „schwere Probleme“ wachsen exponentiell oder schneller und „leichte Probleme“ können mit einem maximal polynomiellen Verfahren (Algorithmus) gelöst werden.
Komplexität | O-Notation | Kategorie | Beispiel |
---|---|---|---|
statisch | O(1) | leicht | |
logarithmisch | O(log2(n)) | leicht | Binäre Suche |
linear | O(n) | leicht | Lineare Suche |
n log n | O(n * log2(n)) | leicht | Tournament-Sort, Merge-Sort, Quick-Sort |
quadratisch | O(n2) | leicht | Bubble-Sort, Insertion-Sort Selection-Sort |
polynomiell | O(nk) für k > 2 | leicht | Dijkstra Algorithmus (Ameisen Algorithmus) |
exponentiell | O(dn) für d > 1 | schwer | Fibonacci-Funktion rekursiv |
faktoriell | O(n!) | schwer | Problem des Handelsreisenden (TSP Travelling Salesman Problem) |