2.3 Sortieren 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 Höhere Sortierverfahren 2.3.4 Komplexität von Sortierverfahren 2.3.5 Spezielle Sortierverfahren 1 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Sortierproblem • Bringe eine gegebene Folge von Datenobjekten in eine wohldefinierte Reihenfolge. • Folge ≠ Menge !! (doppelte Objekte) • Reihenfolge (Ordnungsrelation) 2 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Ordnungsrelationen • Menge M, Relation ≤ • Partielle Ordnung – Reflexivität x≤x – Transitivität x≤y∧y≤z⇒x≤z – Antisymmetrie x ≤ y ∧ y ≤ x ⇒ x = y • Strikter Anteil – x < y :⇔ x ≤ y ∧ x ≠ y 3 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Ordnungsrelationen • Menge M, Relation ≤ • Totale Ordnung – Trichotomie ∀x,y: x < y ∨ x = y ∨ x > y • Sortierschlüssel – key[objekt] – z.B. Adresse nach Nachnamen sortiert 4 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Ordnungsrelationen • Skalare Typen besitzen in der Regel eine totale Ordnung • Mengen von Integer 2N, Mengeninklusion ⊆ – Partielle Ordnung ... {1,2}, {2,3} • Punkte in der Ebene R×R – Keine Ordnung (x,y) ≤ (u,v) ⇔ x2 + y2 ≤ u2 + v2 – Totale Ordnung (Lexikographisch) (x,y) ≤ (u,v) ⇔ x < u ∨ (x=u ∧ y≤v) 5 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Sortierproblem • Gegeben eine Folge von Objekten R1,...,Rn • Schreibweise Ri ≤ Rj :⇔ key[Ri] ≤ key[Rj] • Finde eine Permutation π, so dass ∀i=1,...,n−1: Rπ(i) ≤ Rπ(i+1) • Insbesondere ∀i,j: i < j ⇒ Rπ(i) ≤ Rπ(j) 6 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Warum sortieren? • Bringe Objekte mit gleichen oder ähnlichen Schlüsseln zusammen • Detektiere doppelte Objekte • Vorbereitung zum Suchen – O(n) → O(log n) – Lohnt sich nur, wenn m×n×C1 > Csort(n) + m×log(n)×C2 7 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Begriffe • Direktes / Indirektes Sortieren – Direkt: Umkopieren der Objekte Ri – Indirekt: Erzeuge Permutationstabelle π • Initialisierung π(i):=i • Zugriff per Rπ(i) • Sortieren bzgl. mehrerer Schlüssel / Relationen • Stabilität (Reihenfolge von Objekten mit gleichem Schlüssel bleibt erhalten) 8 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Kriterien • Berechnungsaufwand – O(n2), O(n×log n), O(n) • Worst vs. Average Case – Ausnutzen von Vorsortierungen • Speicherbedarf – Kopieren – In-place 9 Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer