Datenstrukturen und
Algorithmen
VO INF.02031UF
B-Sort:
Sortieren mit (2-4)-Bäumen
D&A: B-Sort
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
7
B-Sort (“Baumsortieren”)
D&A: B-Sort
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
9
Beispiel Bottom-Up Einfügen
D&A: B-Sort
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
11