Sortieren - Das "Schweizer Taschenmesser" der Informatik

Es ist in der Praxis immer wieder erstaunlich zu beobachten, in wie vielen Algorithmen das geeignete Sortieren der Daten ein zentraler Bestandteil des Verfahrens ist. Nicht ohne Grund heisst es "If it can't be done with sorting, it's not worth doing", was sicher ein wenig übertrieben, aber im Kern wiederum auch richtig ist. Woran liegt es, das Sortieren ein so wichtiges Verfahren ist?

Vom Nutzen individueller Such-Logiken
Da ist zum einen, das Sortieren ein relativ "billiges" Verfahren ist. Wird es effizient implementiert, so liegt seine Komplexität irgendwo zwischen O(n) und O(n log n) - je nach Daten und Algorithmus. Dabei kommt der "klassische" Systemsort üblicherweise auf O(n log n). Das ist selbst bei sehr grossen Datenmengen ein Aufwand, der auf modernen Maschinen ohne Probleme zu berechnen ist. Oft ist es auch möglich, durch gewisses "Vorwissen" über die Daten - etwa ihren Wertebereich, oder auch vorhandene "Vorsortierungen" - spezielle Sortierverfahren zu implementieren, die solche Daten mit quasi linearem Aufwand O(n) sortieren.

Zum zweiten ist es durch entsprechende Wahl der Vergleichsfunktion ausserordentlich flexibel. Damit ist gemeint, dass die meisten Verfahren auf Vergleichen zwischen Elementen beruhen, und die dafür zu nutzende Funktion an die Daten und die zu gewinnenden Erkenntnisse angepasst werden kann. Es macht einen Unterschied, ob sie Daten zuerst nach dem Nach- und dann nach dem Vornamen oder aber umgekehrt sortieren, und beide Ordnungen können je nach der Art der Fragestellung sinnvoll sein.

Zusammenfassend kann man sagen, dass das "billige" Erstellen einer wie auch immer gearteten "Ordnung" auf Daten natürlicherweise diese ausgezeichnete Stellung innerhalb der Algorithmen geniesst.