Vorlesung 2.3.1

Werbung
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
Herunterladen