Menu
Coddy logo textTech

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. size gibt 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.

quiz iconTeste dich selbst

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