Ein Sortierverfahren ist ein Algorithmus, der dazu dient, eine Menge von Werten zu sortieren.
Voraussetzung ist, dass auf den Werten eine strenge schwache Ordnung existiert, etwa die alphabetische Ordnung von Zeichenketten oder die numerische Ordnung von Zahlen.
Die Folge liegt üblicherweise in Form eines Arrays vor.
Es gibt verschiedene Sortierverfahren, die unterschiedlich effizient arbeiten. Die Komplexität eines Algorithmus, also die Anzahl der nötigen Operationen, wird üblicherweise in der Landau-Notation dargestellt. Einige Sortierverfahren benötigen außerdem neben dem zur Speicherung des Arrays nötigen noch weiteren Speicherplatz. Komplexität und Speicherbedarf hängen bei einigen Sortierverfahren von der anfänglichen Anordnung der Werte im Array ab, man unterscheidet dann zwischen Best Case (bester Fall), Average Case (Durchschnittsverhalten) und Worst Case (schlechtester Fall).
Man unterscheidet zudem zwischen stabilen und instabilen Sortierverfahren. Stabile Sortierverfahrenm sind solche, die die relative Reihenfolge von Elementen, die bezüglich der Ordnung äquivalent sind, nicht verändern, während instabile Sortierverfahren diese Reihenfolge ändern können.
Zudem unterscheidet man zwischen Sortierverfahren, die in-place arbeiten, d.h. die ohne zusätzlichen Speicherplatz funktionieren, und solchen, die dies nicht tun.
Allgemeine Verfahren basieren auf dem paarweisen Vergleich der zu sortierenden Elemente. Bei der Komplexitätsanalyse wird davon ausgegangen, dass der Aufwand zum Vergleich zweier Elemente konstant ist.
Beweis der unteren Schranke für vergleichsbasiertes Sortieren
Es lässt sich beweisen, dass ein vergleichsbasiertes Sortierverfahren nicht schneller als
sein kann:
Sei B der Entscheidungsbaum für die Zahlenfolge X (x1,....,xn). Da alle Permutationen von X das Ergebnis des Sortieralgorithmus sein könnten, muss der Entscheidungsbaum B mindestens n! Blätter haben.
Da eine Mindestanzahl von Schritten gesucht ist, treten im Entscheidungsbaum keine unnötigen Vergleiche auf.
In einem Entscheidungsbaum mit n! Blättern beträgt die maximale und die mittlere Tiefe eines Blattes mindestens log(n!).
Da eine untere Schranke gesucht ist, kann n! mittels
nach unten hin abgeschätzt werden. Damit gilt
Es bleibt noch zu zeigen, dass in einem Binärbaum mit k Blättern die maximale und die mittlere Tiefe eines Blattes mindestens log(k) beträgt. Angenommen B sei ein Binärbaum für welchen die obige Aussage nicht gilt. Seien T1 und T2 Teilbäume eines Binärbaumes mit k>2 Blättern. Für die Anzahl der Blätter k1 in T1 bzw. k2 in T2 gilt nun offensichtlich k1 < k, k2 < k und k1+k2 =k.
Für die Tiefe jedes Blattes, bezogen auf die Wurzel von B, gilt:
Das Minimum dieser Funktion liegt nun bei k1 + k2 = k und k1 = k2 = k/2. Eingesetzt in obige Formel ergibt das:
Dies ergibt einen Widerspruch zur Annahme, womit obige Aussage bewiesen wäre.
Nicht-vergleichsbasiertes Sortieren
Trotz des oben angegebenen Beweises ist es möglich, bestimmte Daten in linearer Zeit zu sortieren, allerdings nicht vergleichsbasiert. Dazu muss es sich um Daten handeln, bei denen sich aus dem Schlüssel auch ohne Vergleiche mit anderen Elemente Information über die Position des Elementes in der sortierten Folge gewinnen lässt. In diesem Fall kann ein spezialisiertes Verfahren schneller sein.
Wenn nicht mehr nach Eigenschaften, sondern nur noch nach paarweisen Beziehungen sortiert werden kann, so spricht man von einer topologischen Sortierung. Dies ist beispielsweise der Fall, wenn Aufgaben erledigt werden müssen, manche Aufgaben aber unbedingt vor anderen durchzuführen sind, bei anderen jedoch die Reihenfolge keine Rolle spielt.
For das topologische Sortieren gibt es Algorithmen, deren Laufzeit von der Anzahl der Beziehungen O(m) abhängt. Topologisches Sortieren ist nicht möglich, wenn gegenseitige (zyklische) Abhängikgkeiten bestehen. Eine topologische Sortierung muss nicht eindeutig sein.
Wenn die Beziehungen vollständig sind, also für je zwei Objekte eine Abhängigkeit vorgegeben ist, so geht die topologische Sortierung in eine gewöhnliche Sortierung über. Das Laufzeitverhalten der Algorithmen bei n Objekten ist dann O(n2).
Dieser Beitrag ist aus der XML-Version der deutschen WikiPedia® entwickelt worden und unterliegt inhaltlich den GNU FDL-Lizenzbestimmungen. Linkziele außerhalb der wikipedia-Inhalte unterliegen den Urheberrechten der jeweiligen Anbieter
( DirectDownloads ) Kalenderblätter druckfertig aufbereitet für Schmuckblätter zum Selbstdrucken im Word DOC6/RTF Format, je Euro 5 über Click&BuyJAN | FEB | MÄRZ APRIL | MAI | JUNI JULI | AUG | SEPT OKT | NOV | DEZ
Das Geschenk für jeden Anlass, nicht nur bei 'runden' Jubiläen Andere Einzeltage oder Zahlungsarten bitte HIER bestellen
Diese Web Site verdient ihr Geld durch Produktverkäufe (CD-ROM, downloads) und in erster Linie durch Anzeigen. Wenn Sie als Webmaster zuverlässige Partner suchen für Ihr eigenes Anzeigenschäft, dürfen Sie sich gerne auf unsere Empfehlungen stützen:
z.B.: GigaCash & ProfiWin