Sortieren dient dazu, einen Array in die richtige Reihenfolge zu bringen. Ein Array aus Zahlen kann z.B. aufsteigend sortiert werden,
d.h. jedes Element feld[i]
ist kleiner oder gleich dem nachfolgenden Element feld[i+1]
.
Ein Array mit Strings wird lexographisch sortiert (also so wie im Wörterbuch).
Neben aufsteigen kann auch absteigend sortiert werden, d.h. jdede Element an Position i ist größer als seine Nachfolger ab Position i+1.
Beim Bubblesort wird eine Blase (engl. Bubble) druch das Array geschoben. In der Blase sind immer zwei aufeinanderfolgende Elemente des Arrays.
Ist das erste Element in der Blase größer als das zweite, werden die Elemente vertauscht.
Wenn die Blase komplett durch das Array geschoben wurde, und nichts vertauscht wurde ist das Feld sortiert. Anderenfalls wird die Blase nochmals durch das Feld geschoben.
Also ist der Ablauf wie folgt:
- Vergleiche alle Paare
feld[i]
und feld[i+1]
- ist
feld[i]>feld[i+1]
, dann vertausche sie mit einem Dreieckstausch
- merk dir, dass etwas vertauscht wurde
- Wenn etwas im letzten Durchlauf vertauscht wurde gehe zu 1.)
Bei der Umsetzung ist zu beachten, dass die Schleife, welche die Blase durchschiebt nur bis zur Länge-2 geht, da sonst die Blase über den Rand des Arrays hinausragt.
Endlos-Schleife: (wird abgebrochen, wenn fertig sortier wurde)
vertauscht = False
für i von 0 bis zur Länge von feld:
wenn feld[j] größer ist als feld[j+1]:
vertausche feld[j] mit feld[j+1]
vertauscht = True
Wenn nichts verauscht wurde:
das sortieren ist beendet