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