Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Imma Boehner Geändert vor über 10 Jahren
1
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Weitere Sortierverfahren Heapsort-Nachtrag Prof. Th. Ottmann
2
Heapsort Effizientes Verfahren zum Sortieren (auch im worst case in O(n log n)) Prinzip: Sortieren durch wiederholtes Auswählen des Maximums (ähnlich Selection Sort) Besonderheit: Verwendung einer Datenstruktur Heap, welche die Bestimmung des Maximums effizient unterstützt Definition. Eine Folge F = (k1, k2, , kn) von Schlüsseln ist ein (Max-) Heap, wenn für alle i {1, 2, …, n/2} gilt: ki ≥ k2i und ki ≥ k2i+1. Heapsort operiert auf einem Array, das man mithilfe eines vollständigen Baumes veranschaulicht.
3
Veranschaulichung der Heap-Ordnung
Veranschaulichung des Heaps durch Binär-Baum mit Positionsnummern: Level i hat 2i Knoten (außer dem letzten) Knoten sind von oben nach unten und von links nach rechts nummeriert. Knoten i hat Knoten 2i als linken und Knoten 2i + 1 als rechten Nachfolger und Knoten i/2 als Vorgänger (falls jeweils vorhanden). Aus der Heap-Bedingung ki ≥ k2i und ki ≥ k2i+1 folgt: Das Maximum steht an der Wurzel (an Index 1) und kann sofort entfernt werden. 1 7 2 6 3 5 4 2 5 3 6 4 7 1
4
Heapsort Sortieren mit Hilfe eines Heaps:
Phase 1: Verwandeln des gegebenen Arrays in einen Heap Phase 2: Iterieretes Extrahieren des Maximums (von Position 1), Tauschen des Elementes mit höchstem Index im nichtsortierten Teil an Position1 und versickern lassen im Rest. Phase 2 wird n-Mal ausgeführt, jede Ausführung kostet höchstens O(log n) Schlüsselvergleiche. Phase 1 kann in Zeit O(n) ausgeführt werden. Gesamtlaufzeit von Heapsort: O(n log n)
5
Heapaufbau Niveau, #Knoten, Versick.-Aufwand/Knoten
6
Aufwand für Heapaufbau
Gesamtaufwand = 202k (k-1) (k-2) + … + 2(k-1) 2 = 2 S(k), mit S(k) = 20k + 21(k-1) + 22(k-2) + … + 2(k-1)1 = 2 (n – k – 1) = O(n)
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.