Datenstrukturen und Algorithmen

Werbung
Datenstrukturen und
Algorithmen
VO INF.02031UF
B-Sort:
Sortieren mit (2-4)-Bäumen
D&A: B-Sort
[email protected]
1
Gibt es ein Sortierverfahren das
adaptiv und worst-case optimal ist?
in-place stabil
adaptiv
Best-case
Avg.-case
Worst-case
O(n2)
O(n2)
InsertionSort



O(n)
MergeSort



O(n log n)
O(n log n) O(n log n)
QuickSort



O(n log n)
O(n log n)
HeapSort



O(n log n)
O(n log n) O(n log n)
D&A: B-Sort
[email protected]
O(n2)
2
Recap: Insertion-Sort
Arbeitet in n-1 (= Anzahl der Zahlen-1) Durchgängen
Nach dem i-ten Durchgang sind die Zahlen 1..i+1 sortiert.
Im i-ten Durchgang wird die (i+1)-te Zahl von links betrachtet und
– solange nach links verschoben bis sie in die Sortierung passt
D&A: B-Sort
[email protected]
3
Recap: Insertion-Sort
Arbeitet in n-1 (= Anzahl der Zahlen-1) Durchgängen
Nach dem i-ten Durchgang sind die Zahlen 1..i+1 sortiert.
Im i-ten Durchgang wird die (i+1)-te Zahl von links betrachtet und
– solange nach links verschoben bis sie in die Sortierung passt
Idee: Sortiertes Einfügen in 2-4 Bäumen ist effizient!
D&A: B-Sort
[email protected]
4
B-Sort (“Baumsortieren”)
• B-Sort ist adaptiv und worst-case optimal
• Maß für Sortiertheit: #Fehlstände
– sei a1, …, an eine (unsortierte) Zahlenfolge
– 𝑓𝑖 = # Fehlstände für ai
𝑓𝑖 = |{𝑎𝑗 |𝑗 > 𝑖, 𝑎𝑗 < 𝑎𝑖 }|
– Fehlstände der Zahlenfolge: 𝐹 = σ𝑛𝑖=1 𝑓𝑖
– Es gilt: 0 ≤ 𝐹 ≤
D&A: B-Sort
𝑛 𝑛−1
2
=
𝑛
2
[email protected]
5
B-Sort (“Baumsortieren”)
• Sortieren durch Einfügen von
an, an-1,…, a1
in (anfangs leeren) (2-4)-Baum
(verkehrte Reihenfolge!)
• Blätter in (2-4)-Baum sind ai‘s
• Innere Knoten speichern nur Maximum im
Teilbaum.
D&A: B-Sort
[email protected]
6
B-Sort (“Baumsortieren”)
Allgemeine Situation:
– 𝑎𝑛 , … , 𝑎𝑖+1 sei bereits eingefügt (sind sortiert im Baum)
– 𝑎𝑖+1 wird jetzt eingefügt
Folge: 𝑎1 … 𝑎𝑖
𝑎𝑖+1 … 𝑎𝑛
𝑏𝑒𝑟𝑒𝑖𝑡𝑠 𝑒𝑖𝑛𝑔𝑒𝑓ü𝑔𝑡,
𝑑𝑎𝑣𝑜𝑛 𝑓𝑖 𝑍𝑎ℎ𝑙𝑒𝑛<𝑎𝑖
Es folgt:
𝑎𝑖 wird im Baum an der Stelle 𝑓𝑖 + 1 von links eingefügt.
D&A: B-Sort
[email protected]
7
B-Sort (“Baumsortieren”)
D&A: B-Sort
[email protected]
8
B-Sort (“Baumsortieren”)
w’…Wurzel von T’
Idee: Wenn fi klein, liegt
w’ tief.
Einfügen bottom up:
– Starte bei linkestem Blatt
– Laufe bis zu w’, d.i. erster innerer Knoten mit
Max>ai.
– Füge ai in Teilbaum ein.
→Anhängen von ai in θ(log fi) Zeit.
D&A: B-Sort
[email protected]
9
Beispiel Bottom-Up Einfügen
D&A: B-Sort
[email protected]
10
B-Sort ist adaptiv und wc-optimal
Laufzeit B-Sort:
𝐹
𝑇 𝑛 = 𝑂 𝑛 log
+𝑛
𝑛
F…Anzahl der Fehlstände in Zahlenfolge
• F=O(n) → T(n) = O(n)
• F=O(n2) → T(n) = O(n log n)
D&A: B-Sort
[email protected]
11
Herunterladen