Sortieren durch Aufsteigen / Bubblesort
Die Grundidee
Die folgende Abbildung verdeutlicht die Grundidee eines Sortierverfahrens, das "Sortieren durch Aufsteigen" oder "Bubblesort" genannt wird.
Aufgabe 1
(a) Welche Elemente werden hier jeweils verglichen und ggf. vertauscht? Nach welcher Strategie werden die Vergleiche und Vertauschungen durchgeführt? Welche Bedeutung hat der blau unterlegte Bereich? Beschreibe die Grundidee des Verfahrens in Worten. Erkläre auch die Bezeichnung "Sortieren durch Aufsteigen": Was steigt hier auf?
(b) Führe das Sortierverfahren Sortieren durch Aufsteigen
am folgenden Beispiel durch.
Dokumentiere alle Zwischenschritte.
[25 17 15 56 19 66 8 20] ^ ^ [17 25 15 56 19 66 8 20] ^ ^ [17 15 25 56 19 66 8 20] ^ ^ [17 15 25 56 19 66 8 20] ^ ^ [17 15 25 19 56 66 8 20] ^ ^ [17 15 25 19 56 66 8 20] ^ ^ [17 15 25 19 56 8 66 20] ^ ^ [17 15 25 19 56 8 20 |66] ^ ^ ...
(c) Kannst du die folgende Bubblesort-Animation erklären? Da sie sehr schnell abläuft, reicht es, wenn du dich auf den sortierten Bereich konzentrierst.
Ablaufmodellierung
Der folgende 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 25 19 8 56 29 6 20 66 29] ^ ^ [17 25 32 25 19 8 56 29 6 20 29 |66] ^ ^ ... [17 25 25 19 8 32 29 6 20 56 29 |66] ^ ^ [17 25 25 19 8 32 29 6 20 29 |56 66] ^ ^ ...
Informell lässt sich dieser Sortierablauf so beschreiben:
ALGORITHMUS bubblesort Übergabe: Liste unsortierter Bereich ist zunächst die gesamte Liste SOLANGE der unsortierte Bereich noch mehr als ein Element hat: durchlaufe den unsortierten Bereich von links nach rechts wenn dabei zwei benachbarte Elemente in der falschen Reihenfolge vorliegen: vertausche die beiden Elemente verkürze den unsortierten Bereich durch Weglassen des letzten Elements Rückgabe: überarbeitete Liste
Aufgabe 2
Entwickle ein Struktogramm zur Präzisierung des Ablaufs.
Aufgabe 3
Implementiere den Algorithmus bubblesort
und teste das Sortierverfahren.