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.
