Prof. Dr. Burkhard Monien Paderborn, den 15. Mai 2006 Übungen zur Vorlesung Datenstrukturen und Algorithmen Rest der Lösung von Aufgabe 16 Blatt 5 Invariate Build-Max-Heap’ Vor Durchlauf der Schleife mit Index i, ist das Array A[1..i − 1] ein Max-Heap auf den ersten i − 1 Eingabezahlen. Initialisierung Der erste Schleifendurchlauf erfolgt mit i = 2 und das Array A[1..1] ist ein Max-Heap auf der ersten Eingabezahl. Erhaltung Gelte die Invariante vor Durchlauf mit Index i. Dann ist A[1..i − 1] ein Max-Heap auf den ersten i − 1 Eingabezahlen. In Zeile 3 wird dann Max-Heap-Insert mit Parametern A, A[i] aufgerufen. Dieser Aufruf erweitert den Heap korrekt um den Eintrag A[i]. Die Korrektheit folgt aus der Korrektheit von Max-Heap-Insert. Terminierung Am Ende und vor Durchlauf der Schleife mit Index (length(A) + 1) ist A[1..lenght(A)] ein Max-Heap auf allen Eingabezahlen. Laufzeit Es ist n = length(A). In Max-Heap-Insert wird die nächste Eingabezahl von unten in den Heap geschoben. Jede Vertauschung benötigt dabei konstante Zeit. Da der Heap maximale Höhe log(heap − size(A)) ≤ log(n) hat, beötigt Max-Heap-Insert O(log(n)) Zeit. Max-Heap-Insert wird von Build-Max-Heap’ genau n − 1 mal aufgerufen. ⇒ Laufzeit is O(n log(n)).