Menu
Coddy logo textTech

Pseudo Code

Leçon 4 sur 9 du cours Tri par tas - Série DSA de 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:   # build max-heap
      siftDown(array, i, n)
   for end from n-1 down to 1:     # extract max repeatedly
      swap array[0] and array[end]
      siftDown(array, 0, end)
  • siftDown pousse un parent trop petit vers le bas, après son enfant plus grand, jusqu'à ce que la propriété du tas max (max-heap) soit restaurée. size représente la portion du tableau qui fait encore partie du tas.
  • Phase de construction : le fait de tamiser vers le bas (sifting down) chaque nœud non-feuille (du dernier parent, à l'indice n/2 - 1, jusqu'à la racine) transforme n'importe quel tableau en un tas max.
  • Phase de tri : chaque étape déplace le maximum actuel vers la fin et réduit la taille du tas, de sorte que le tableau se remplit de manière triée en partant de la fin.

Essayez vous-même

Cette leçon ne comprend pas de défi de code.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Tri par tas - Série DSA