www.wikidata.de-de.nina.az
Dieser Artikel behandelt Sortierverfahren in der Informatik Zu Sortierverfahren in der Verfahrenstechnik siehe Technisches Sortierverfahren Unter einem Sortierverfahren versteht man in der Informatik einen Algorithmus der dazu dient ein Tupel i Allg ein Array zu sortieren Voraussetzung ist dass auf der Menge der Elemente eine strenge schwache Ordnung definiert ist kleiner gleich z B die lexikographische Ordnung von Zeichenketten oder die numerische Ordnung von Zahlen Es gibt verschiedene Sortierverfahren die unterschiedlich effizient arbeiten bezuglich der Zeitkomplexitat Anzahl der notigen Operationen sowie der Platzkomplexitat zusatzlich zum Eingabe Array benotigter weiterer Speicherplatz Die Komplexitat eines Algorithmus wird ublicherweise in der Landau Notation dargestellt s u Ausdrucke wie 8 n log n displaystyle Theta n cdot log n Theta oder stilisiertes Oh Omega gross Omega klein Die Zeitkomplexitat hangt bei einigen Sortierverfahren von der anfanglichen Anordnung der Werte im Array ab man unterscheidet dann zwischen Best Case bei gunstigster Vorsortierung Average Case Normalfall und Worst Case schlechtester Fall die Werte sind maximal ungunstig vorgeordnet Haufig sind zusatzliche Faktoren zu beachten die Einfluss auf Zeit oder Platzkomplexitat haben zum Beispiel langsamer Zugriff auf extern liegende Daten begrenzte Grosse des Arbeitsspeichers oder ahnliches Man unterscheidet zudem zwischen stabilen und instabilen Sortierverfahren Stabile Sortierverfahren sind solche die die relative Reihenfolge von Elementen die bezuglich der Ordnung aquivalent sind nicht verandern wahrend instabile Sortierverfahren dies nicht garantieren Ist beispielsweise die Mitarbeiterliste einer Firma nach Nachname geordnet und wird anschliessend nach Alter in Jahren sortiert so bleibt die Nachnamen Reihenfolge unter gleichaltrigen Mitarbeitern bei einem stabilen Sortierverfahren bestehen Zudem unterscheidet man zwischen Sortierverfahren die in place auch in situ arbeiten d h der zusatzliche Speicherbedarf ist unabhangig von der Anzahl der zu sortierenden Elemente also konstant und meist gering und solchen bei denen er abhangig ist out of place oder ex situ Und man unterscheidet auch zwischen naturlichen Sortierverfahren die bei vorsortierten Daten schneller arbeiten als bei unsortierten Daten und solchen die es nicht tun Algorithmen bei denen der Kontrollfluss von den Daten abhangt nennt man adaptiv und dementsprechend Sortierverfahren die nicht von den Eingabedaten abhangen nicht adaptiv Nicht adaptive Algorithmen sind demnach besonders interessant fur Hardware Implementierungen Manuelles Sortieren etwa von Karteikarten sowie elektro mechanische Sortierverfahren z B fur Lochkarten entsprechen meist einem der hier beschriebenen softwarebasierten Sortierverfahren oder Mischtypen Inhaltsverzeichnis 1 Vergleichsbasiertes Sortieren 2 Nicht vergleichsbasiertes Sortieren 3 Sortierung nach Beziehungen 4 Indirektes Sortieren 5 Beweis der unteren Schranke fur vergleichsbasiertes Sortieren 6 Literatur 7 WeblinksVergleichsbasiertes Sortieren BearbeitenAllgemeine Verfahren basieren auf dem paarweisen Vergleich der zu sortierenden Elemente ob das eine Element kleiner als grosser als oder gleich gross wie das andere Element ist Bei der Komplexitatsanalyse wird davon ausgegangen dass der Aufwand zum Vergleich zweier Elemente konstant ist Die Tabelle zeigt den Aufwand fur unterschiedliche Sortierverfahren Sortierverfahren Gunstigster Fall Best Case Mittlerer Fall Average Case Ungunstigster Fall Worst Case Stabil Zusatzlicher SpeicherbedarfBinary Tree Sort hohen balanciert 8 n log n displaystyle Theta n cdot log n nbsp 8 n log n displaystyle Theta n cdot log n nbsp 8 n log n displaystyle Theta n cdot log n nbsp ja 1 8 n displaystyle Theta n nbsp Binary Tree Sort 8 n log n displaystyle Theta n cdot log n nbsp 8 n log n displaystyle Theta n cdot log n nbsp 8 n 2 displaystyle Theta n 2 nbsp ja 1 8 n displaystyle Theta n nbsp Bubblesort 8 n displaystyle Theta n nbsp 8 n 2 displaystyle Theta n 2 nbsp 8 n 2 displaystyle Theta n 2 nbsp ja Combsort 8 n log n displaystyle Theta n cdot log n nbsp O n 2 displaystyle mathcal O n 2 nbsp O n 2 displaystyle mathcal O n 2 nbsp nein Gnomesort 8 n displaystyle Theta n nbsp 8 n 2 displaystyle Theta n 2 nbsp 8 n 2 displaystyle Theta n 2 nbsp ja Heapsort 8 n log n displaystyle Theta n cdot log n nbsp 8 n log n displaystyle Theta n cdot log n nbsp 8 n log n displaystyle Theta n cdot log n nbsp nein Insertionsort 8 n displaystyle Theta n nbsp 8 n 2 displaystyle Theta n 2 nbsp 8 n 2 displaystyle Theta n 2 nbsp ja Introsort 8 n log n displaystyle Theta n cdot log n nbsp 8 n log n displaystyle Theta n cdot log n nbsp 8 n log n displaystyle Theta n cdot log n nbsp nein Merge Insertion 8 n log n displaystyle Theta n cdot log n nbsp 8 n log n displaystyle Theta n cdot log n nbsp 2 8 n log n displaystyle Theta n cdot log n nbsp ja Mergesort 8 n log n displaystyle Theta n cdot log n nbsp 8 n log n displaystyle Theta n cdot log n nbsp 8 n log n displaystyle Theta n cdot log n nbsp ja Implementierung auf verketteter Liste in placeubliche Implementierungen auf Array 8 n displaystyle Theta n nbsp Es gibt in place auf Array jedoch dann Zeitkomplex n log n log n Natural Mergesort 8 n displaystyle Theta n nbsp 8 n log n displaystyle Theta n cdot log n nbsp 8 n log n displaystyle Theta n cdot log n nbsp ja Quicksort 8 n log n displaystyle Theta n cdot log n nbsp 8 n log n displaystyle Theta n cdot log n nbsp 8 n 2 displaystyle Theta n 2 nbsp nein 8 log n displaystyle Theta log n nbsp ubliche Implementierungen benotigen meist mehrSamplesort 8 n log n displaystyle Theta n cdot log n nbsp 8 n log n displaystyle Theta n cdot log n nbsp 8 n 2 displaystyle Theta n 2 nbsp nein 8 n displaystyle Theta n nbsp Selectionsort 8 n 2 displaystyle Theta n 2 nbsp 8 n 2 displaystyle Theta n 2 nbsp 8 n 2 displaystyle Theta n 2 nbsp nein Shakersort Cocktailsort 8 n displaystyle Theta n nbsp 8 n 2 displaystyle Theta n 2 nbsp 8 n 2 displaystyle Theta n 2 nbsp ja Shellsort O n log n 2 displaystyle mathcal O n cdot log n 2 nbsp 3 O n log n 2 displaystyle mathcal O n cdot log n 2 nbsp 3 O n log n 2 displaystyle mathcal O n cdot log n 2 nbsp 3 nein Smoothsort 8 n displaystyle Theta n nbsp 8 n log n displaystyle Theta n cdot log n nbsp 8 n log n displaystyle Theta n cdot log n nbsp nein Stoogesort W n 2 7 displaystyle Omega n 2 7 nbsp W n 2 7 displaystyle Omega n 2 7 nbsp W n 2 7 displaystyle Omega n 2 7 nbsp nein Swap Sort 8 n 2 displaystyle Theta n 2 nbsp 8 n 2 displaystyle Theta n 2 nbsp 8 n 2 displaystyle Theta n 2 nbsp Timsort 8 n displaystyle Theta n nbsp 8 n log n displaystyle Theta n cdot log n nbsp 8 n log n displaystyle Theta n cdot log n nbsp ja Bogosort 8 n displaystyle Theta n nbsp O n n displaystyle mathcal O n cdot n nbsp 4 O n n displaystyle mathcal O n cdot n nbsp 4 nein Slowsort W n log n 2 e displaystyle Omega left n frac log n 2 varepsilon right nbsp 5 W n log n 2 e displaystyle Omega left n frac log n 2 varepsilon right nbsp 5 W n log n 2 e displaystyle Omega left n frac log n 2 varepsilon right nbsp 5 nein a b Fur die stabile Version s die Bemerkung im Artikel Binary Tree Sort Florian Stober Armin Weiss On the Average Case of MergeInsertion Abgerufen am 20 Januar 2022 a b c Fur die im Worst Case beste bekannte Distanzfolge a b Erwartete Laufzeit a b c Fur ein beliebiges e gt 0 displaystyle varepsilon gt 0 nbsp siehe Slowsort Nicht vergleichsbasiertes Sortieren BearbeitenBei Sortierverfahren die nicht auf Vergleichen beruhen bei denen die zu sortierenden Objekte also nicht untereinander auf kleiner grosser oder gleich verglichen werden kann bei entsprechend konditionierter Eingabe erreicht werden dass die benotigte Zeit nur linear mit der Anzahl der zu sortierenden Elemente ansteigt Bei grossen Anzahlen zu sortierender Datensatze sind diese Algorithmen den vergleichsbasierten Verfahren uberlegen sofern sie wegen des zusatzlichen Speicherbedarfs angewendet werden konnen Sie konnen allerdings nur fur numerische Datentypen verwendet werden oder unter der Bedingung dass der Datentyp in annehmbarem Aufwand auf Zahlenwerte gleicher Anordnung abgebildet werden kann Dabei wird implizit angenommen dass die Lange des Schlussels beschrankt ist so dass seine Verwertung in konstanter Zeit moglich ist Das Senken der Zeitkomplexitat von der Elementanzahl wird erkauft durch eine zusatzliche zeitliche Abhangigkeitsgrosse meist der Schlussellange oder der Anzahl moglicher Schlusselwerte oft auch durch erheblichen zusatzlichen Speicherbedarf Sortierverfahren Zeit Stabil Zusatzlicher SpeicherbedarfBucketsort O n k displaystyle mathcal O left n k right nbsp ja O n k displaystyle mathcal O left n k right nbsp Countingsort O n k displaystyle mathcal O left n k right nbsp ja O n k displaystyle mathcal O left n k right nbsp Radixsort O n l displaystyle mathcal O left n cdot l right nbsp ja O n displaystyle mathcal O left n right nbsp MSD Radixsort O n l displaystyle mathcal O left n cdot l right nbsp nein O 1 displaystyle mathcal O left 1 right nbsp in placeFlashsort O n O n 2 displaystyle mathcal O left n right mathcal O left n 2 right nbsp nein O 1 displaystyle mathcal O left 1 right nbsp Dabei stellt n displaystyle n nbsp die Anzahl der Elemente dar k displaystyle k nbsp die Anzahl der moglichen Werte und l displaystyle l nbsp die Anzahl der Stellen des langsten Schlussels Sortierung nach Beziehungen BearbeitenWenn 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 mussen manche Aufgaben aber unbedingt vor anderen durchzufuhren sind bei anderen jedoch die Reihenfolge keine Rolle spielt Fur das topologische Sortieren gibt es Algorithmen deren Laufzeit von der Anzahl der Beziehungen abhangt Topologisches Sortieren ist nicht moglich wenn gegenseitige zyklische Abhangigkeiten bestehen Eine topologische Sortierung muss nicht eindeutig sein Wenn die Beziehungen vollstandig sind also fur je zwei Objekte eine Abhangigkeit vorgegeben ist so geht die topologische Sortierung in eine gewohnliche Sortierung uber Indirektes Sortieren BearbeitenIn den Fallen bei denen das Umstellen der Daten mit hohem Aufwand verbunden ist kann man auch indirektes Sortieren anwenden Man benotigt dazu zusatzlichen Speicher proportional zur Anzahl der Elemente bspw einen Zeiger auf das jeweilige Element oder dessen Indexnummer im Basis Array Dann wird dieses Array sortiert und stellt somit einen gemass dem Vergleichskriterium sortierten Index dar Sollen die eigentlichen Daten anschliessend ebenfalls in die richtige Reihenfolge gebracht werden ist ein zusatzlicher Aufwand von 8 n displaystyle Theta left n right nbsp erforderlich Ist auch der wahlfreie Zugriff auf die Elemente teuer so werden mitunter auch diejenigen Datenkomponenten in den Index ubernommen die in den Sortierschlussel einfliessen der Sortierschlussel sind Dies benotigt dann weiteren zusatzlichen Speicherplatz Beweis der unteren Schranke fur vergleichsbasiertes Sortieren BearbeitenEs lasst sich beweisen dass ein vergleichsbasiertes Sortierverfahren nicht schneller als W n log n displaystyle Omega n cdot log n nbsp sein kann Sei B displaystyle B nbsp der Entscheidungsbaum fur die Zahlenfolge X x 1 x n displaystyle X x 1 ldots x n nbsp Da alle Permutationen von X displaystyle X nbsp das Ergebnis des Sortieralgorithmus sein konnten muss der Entscheidungsbaum B displaystyle B nbsp mindestens n displaystyle n nbsp Blatter haben Da eine Mindestanzahl von Schritten gesucht ist treten im Entscheidungsbaum keine unnotigen Vergleiche auf In einem Entscheidungsbaum mit n displaystyle n nbsp Blattern betragt die maximale und die mittlere Tiefe eines Blattes mindestens log n displaystyle log n nbsp Da eine untere Schranke gesucht ist kann n displaystyle n nbsp mittels n n 2 n 2 displaystyle n geq left frac n 2 right n 2 nbsp nach unten hin abgeschatzt werden Damit gilt log n n 2 log n 2 W n log n displaystyle log n geq left frac n 2 right cdot log left frac n 2 right Omega n cdot log n nbsp Es bleibt noch zu zeigen dass in einem Binarbaum mit k displaystyle k nbsp Blattern die maximale und die mittlere Tiefe eines Blattes mindestens log k displaystyle log k nbsp betragt Angenommen B displaystyle B nbsp sei ein Binarbaum fur welchen die obige Aussage nicht gilt Seien T 1 displaystyle T 1 nbsp und T 2 displaystyle T 2 nbsp Teilbaume eines Binarbaumes mit k gt 2 displaystyle k gt 2 nbsp Blattern Fur die Anzahl der Blatter k 1 displaystyle k 1 nbsp in T 1 displaystyle T 1 nbsp bzw k 2 displaystyle k 2 nbsp in T 2 displaystyle T 2 nbsp gilt nun offensichtlich k 1 lt k displaystyle k 1 lt k nbsp k 2 lt k displaystyle k 2 lt k nbsp und k 1 k 2 k displaystyle k 1 k 2 k nbsp Fur die Tiefe jedes Blattes bezogen auf die Wurzel von B displaystyle B nbsp gilt mittlere Tiefe B k 1 k tiefe mittlere T 1 1 k 2 k tiefe mittlere T 2 1 k 1 k log k 1 1 k 2 k log k 2 1 1 k k 1 log 2 k 1 k 2 log 2 k 2 displaystyle begin aligned text mittlere Tiefe B amp frac k 1 k cdot text tiefe text mittlere T 1 1 frac k 2 k cdot text tiefe text mittlere T 2 1 amp geq frac k 1 k cdot log k 1 1 frac k 2 k cdot log k 2 1 amp frac 1 k cdot k 1 cdot log 2 cdot k 1 k 2 cdot log 2 cdot k 2 end aligned nbsp Das Minimum dieser Funktion liegt nun bei k 1 k 2 k displaystyle k 1 k 2 k nbsp und k 1 k 2 k 2 displaystyle k 1 k 2 frac k 2 nbsp Eingesetzt in obige Formel ergibt das mittlere Tiefe B 1 k k 2 log k k 2 log k log k displaystyle text mittlere Tiefe B geq frac 1 k cdot left frac k 2 cdot log k frac k 2 cdot log k right log k nbsp Dies ergibt einen Widerspruch zur Annahme womit obige Aussage bewiesen ist Literatur BearbeitenDonald E Knuth Sorting and Searching In The Art of Computer Programming 2 Auflage Band 3 Addison Wesley Boston 2003 ISBN 0 201 89685 0 Niklaus Wirth Algorithmen und Datenstrukturen 5 Auflage Teubner Verlag Stuttgart Leipzig 1999 ISBN 3 519 22250 7 Robert Sedgewick Algorithms in Java Part 1 4 3 Auflage Addison Wesley Boston 2002 ISBN 0 201 36120 5 Thomas H Cormen Charles Leiserson Ronald L Rivest Clifford Stein Algorithmen Eine Einfuhrung 3 Auflage Oldenbourg Verlag Munchen 2010 ISBN 978 3 486 59002 9 amerikanisches Englisch Introduction to Algorithms Ubersetzt von Paul Molitor Thomas H Cormen Charles Leiserson Ronald L Rivest Clifford Stein Introduction to Algorithms 3 Auflage The MIT Press Cambridge MA London 2009 ISBN 978 0 262 03384 8 Thomas Ottmann Peter Widmayer Algorithmen und Datenstrukturen 3 Auflage Spektrum Verlag Heidelberg Berlin Oxford 1996 ISBN 3 8274 0110 0 Anany Levitin Introduction to The Design and Analysis of Algorithms 2 Auflage Pearson Addison Wesley Boston 2007 ISBN 978 0 321 36413 5 Weblinks Bearbeiten nbsp Commons Sortieralgorithmen Sammlung von Bildern Videos und Audiodateien Quelltexte und Simulationen der Funktionsweise von Sortierverfahren Bluffton University Grafischer Vergleich Einige Sortieralgorithmen Java Video visuelle und auditive Darstellung diverser Sortieralgorithmen Timo Bingmann auf YouTube Abgerufen von https de wikipedia org w index php title Sortierverfahren amp oldid 231841346