kramann.info
© Guido Kramann

Login: Passwort:










9 Sortierverfahren

Sortieren, kann als einer der wichtigsten Operationen in der Datenverarbeitung angesehen werden. Denken Sie z.B. an alfabetisch zu sortierende Adressen, oder an eine Messreihe, die erst in eine geordnete Reihenfolge gebracht werden muss.

Die bekannten Sortierverfahren unterscheinden sich stark in ihrer Geschwindigkeit, wobei Quicksort nachweislich der schnellste erfindbare Algorithmus ist und Bubblesort einer der einfachsten aber auch langsamsten.

Die Verarbeitungsgeschwindigkeit eines Algorithmus wird auch durch seine Komplexität ausgedrückt. Mit Komplexität, oder auch Ordnung O ist eine Masszahl gemeint, die angibt, mit welcher Potenz die Anzahl der Verarbeitungsschritte mit der Anzahl der Elemente zunimmt. So hat eine einfache Schleife, die N Elemente durchgeht, die Ordnung N, was O(N) geschrieben wird. Soll dagegen jedes Element mit jedem verglichen werden, so benötigt man zwei ineinander geschachtelte Schleifen, um jedes Paar vergleichen zu können. Hier ist die Ordnung O(N2). Die beiden näher besprochenen Sortierverfahren Bubblesort und Insertionsort haben die mittlere Ordnung O(N2), Quicksort hat O(NlogN).

Im Internet sind eine ganze Reihe von Links zu finden, wo das Verfahren beim Sortieren für die einzelnen Algorithmen visualisiert wird:

http://www.cs.ubc.ca/spider/harrison/Java/sorting-demo.html
http://arnosoftwaredev.blogspot.com/2005/01/sorting-algorithms-visualized.html
http://www.sortieralgorithmen.de/

Um ein Programm leicht durch andere Personen wartbar zu machen, sollte man einfache Programme schreiben. D.h. wenn keine besonderen Anforderungen an die Verarbeitungsgeschwindigkeit gestellt werden, ist ein kurzer leicht zu durchschauender Code einem komplizierten langen vorzuziehen.

Wenn andererseits ein effizienter Algorithmus bereits in einer Programmbibliothek zur Verfügung steht, ist es nicht sinnvoll diesen selber programmieren zu wollen, da dadurch wieder Quellen für unnötige Fehler entstehen. Quicksort wird in C++ standardmäßig in einer Library zur Verfügung gestellt. Im letzten Beispiel werden wir aufzeigen, wie sie benutzt werden kann.