Sortierverfahren

Darstellung in Struktogrammen

by Dr. M. Halfpap

Zurück zur Hauptseite

Bubblesort :

Auswahlsort :

Einfügesort :

Shakersort :

Verbessertes Sortieren durch Vertauschen (Shakersort)

Der Bubblesort-Algorithmus läßt sich recht einfach erheblich verbessern. So werden z.B. bei den letzten Durchläufen überhaupt keine Elemente mehr vertauscht, die Folge ist bereits sortiert. Nun ließe sich ein Flag einführen, das TRUE wird, wenn kein Austausch mehr erfolgt. Der Algorithmus könnte dann abbrechen. Genauso gut wäre es möglich, sich zusätzlich noch den Index zu merken, wo die letzte Vertauschung durchgeführt wurde, und dann beim nächsten Mal nur bis dorthin laufen zu lassen. Es muß sich bei diesem Index nämlich nicht unbedingt um i handeln.

Diese kleinen Änderungen sind nicht sonderlich aufwendig, bringen aber einiges. Es gibt allerdings noch ein Problem: Eine kleinste Blase, die ganz am unteren/rechten Ende steht, kommt mit einem Durchlauf an die richtige Stelle.

20 33 41 53 59 66 84 13

wird in einem Durchlauf sortiert. Eine zu große Blase wird allerdings pro Durchlauf nur ein Element nach unten/rechts geschoben.

84 13 20 33 41 53 59 66 benötigt acht Durchläufe, obwohl die Folge fast vollständig geordnet ist. Um diesem Umstand abzuhelfen, wird bei Shakersort mal wie bei Bubblesort, mal umgekehrt sortiert, immer abwechselnd. Dabei merkt sich das Programm bei der Bubblesort-Richtung den kleinsten Vertauschindex, bei der anderen den größten, so daß die zu untersuchende Folge zusätzlich schneller kleiner werden kann als beim normalen Bubblesort. Außerdem läßt sich leicht feststellen, wann die Folge sortiert ist, wenn nämlich der linke Index größer oder gleich dem rechten ist.

Wir betrachten auch hier die Beispielfolge, um den Unterschied zum normalen Bubblesort zu erkennen. Dabei ist l der linke und r der rechte Index.

Startfolge     53   59   20   41   84   33   13   66
     l=2 r=8   13   53   59   20   41   84   33   66
     l=3 r=8   13   53   20   41   59   33   66   84
     l=4 r=7   13   20   53   33   41   59   66   84
     l=4 r=4   13   20   33   41   53   59   66   84   sortiert