Pseudo Code
Lektion 4 von 9 im Kurs Heap Sort - DSA-Serie von Coddy.
siftDown(array, i, size):
loop:
largest = i
left = 2*i + 1
right = 2*i + 2
if left < size and array[left] > array[largest]: largest = left
if right < size and array[right] > array[largest]: largest = right
if largest == i: stop
swap array[i] and array[largest]
i = largest
heapSort(array):
n = length(array)
for i from n/2 - 1 down to 0: # Max-Heap erstellen
siftDown(array, i, n)
for end from n-1 down to 1: # Maximum wiederholt extrahieren
swap array[0] and array[end]
siftDown(array, 0, end)- siftDown verschiebt ein zu kleines Elternelement an seinem größeren Kind vorbei nach unten, bis die Max-Heap-Eigenschaft wiederhergestellt ist.
sizegibt an, wie viel des Arrays noch Teil des Heaps ist. - Aufbauphase: Das Herabsieben jedes Nicht-Blatt-Knotens (vom letzten Elternelement, Index
n/2 - 1, bis zur Wurzel) verwandelt jedes Array in einen Max-Heap. - Sortierphase: Jeder Schritt verschiebt das aktuelle Maximum an das Ende und verkleinert den Heap, sodass sich das Array von hinten her sortiert füllt.
Probier es selbst
Diese Lektion enthält keine Programmieraufgabe.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Heap Sort - DSA-Serie
2The Algorithm
How it works?Pseudo CodeImplementation (Part 1)Implementation (Part 2)