Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Vorlesung Informatik 2 Algorithmen und Datenstrukturen 09 - Weitere Sortierverfahren Heapsort-Nachtrag Prof. Th. Ottmann.

Ähnliche Präsentationen


Präsentation zum Thema: "Vorlesung Informatik 2 Algorithmen und Datenstrukturen 09 - Weitere Sortierverfahren Heapsort-Nachtrag Prof. Th. Ottmann."—  Präsentation transkript:

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)


Herunterladen ppt "Vorlesung Informatik 2 Algorithmen und Datenstrukturen 09 - Weitere Sortierverfahren Heapsort-Nachtrag Prof. Th. Ottmann."

Ähnliche Präsentationen


Google-Anzeigen