1 / 6

Prof. Th. Ottmann

Vorlesung Informatik 2 Algorithmen und Datenstrukturen 09 - Weitere Sortierverfahren Heapsort-Nachtrag. Prof. Th. Ottmann. Heapsort. Effizientes Verfahren zum Sortieren (auch im worst case in O( n log n ))

Download Presentation

Prof. Th. Ottmann

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Vorlesung Informatik 2Algorithmen und Datenstrukturen09 - Weitere SortierverfahrenHeapsort-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 desMaximums effizient unterstützt Definition.Eine FolgeF = (k1, k2, . . . , kn) von Schlüsseln ist ein (Max-) Heap,wenn für alle i  {1, 2, …, n/2} gilt:ki≥ k2iundki≥ k2i+1. Heapsort operiert auf einem Array, das man mithilfe eines vollständigen Baumes veranschaulicht.

  3. 4 1 3 7 6 5 2 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 undKnoten 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 1 2 3 4 5 6 77 6 5 2 3 4 1 2 3 4 6 7 5

  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 + 21 2(k-1) + 22 2(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)

More Related