Sortieren durch Einfügen / Insertionsort
Die Grundidee
Die folgende Abbildung verdeutlicht die Grundidee eines Sortierverfahrens, das "Sortieren durch Einfügen" oder "Insertionsort" genannt wird.
Aufgabe 1
(a) Erkläre die Bezeichnung "Sortieren durch Einfügen": Was wird hier wo und wie eingefügt?
(b) Führe das Sortierverfahren Sortieren durch Einfügen
am folgenden Beispiel weiter durch.
Dokumentiere alle Schritte.
[25] [17 32 56 25 19 8 66 29 6 20 29]
^
[17 25] [32 56 25 19 8 66 29 6 20 29]
^
[17 25 32] [56 25 19 8 66 29 6 20 29]
^
[17 25 32 56] [25 19 8 66 29 6 20 29]
^
[17 25 25 32 56] [19 8 66 29 6 20 29]
^
...
Ablaufmodellierung
Der Sortierablauf soll jetzt präzisiert werden.
[25] [17 32 56 25 19 8 66 29 6 20 29]
^
[17 25] [32 56 25 19 8 66 29 6 20 29]
^
[17 25 32] [56 25 19 8 66 29 6 20 29]
^
[17 25 32 56] [25 19 8 66 29 6 20 29]
^
[17 25 25 32 56] [19 8 66 29 6 20 29]
^
...
Beachte, dass beim Sortiervorgang eine neue Liste angelegt werden kann (siehe oben), oder dass der gesamte Sortiervorgang innerhalb der Ausgangsliste erfolgen kann (siehe unten).
[25| 17 32 56 25 19 8 66 29 6 20 29]
^
[17 25| 32 56 25 19 8 66 29 6 20 29]
^
[17 25 32| 56 25 19 8 66 29 6 20 29]
^
[17 25 32 56| 25 19 8 66 29 6 20 29]
^
[17 25 25 32 56| 19 8 66 29 6 20 29]
^
...
Informell lässt sich dieser Sortierablauf so beschreiben:
ALGORITHMUS insertionsort
Übergabe: Liste
sortierter Bereich besteht aus dem ersten Element der Liste
unsortierter Bereich ist die Restliste (ohne das erste Element)
SOLANGE der unsortierte Bereich Elemente hat:
entferne das erste Element aus dem unsortierten Bereich
füge es an der richtigen Stelle im sortierten Bereich ein
Rückgabe: sortierter Bereich
Aufgabe 2
Entwickle ein Struktogramm zur Präzisierung des Ablaufs.
Aufgabe 3
Implementiere den Algorithmus insertionsort und teste das Sortierverfahren.