Menu
Coddy logo textTech

Pseudo Code

Lección 4 de 9 del curso Heap Sort - Serie de 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:   # construir max-heap
      siftDown(array, i, n)
   for end from n-1 down to 1:     # extraer el máximo repetidamente
      swap array[0] and array[end]
      siftDown(array, 0, end)
  • siftDown empuja a un padre demasiado pequeño hacia abajo, pasando a su hijo más grande, hasta que se restaura la propiedad de max-heap. size es la parte del arreglo que todavía forma parte del heap.
  • Fase de construcción: realizar el tamizado (sifting down) de cada nodo que no sea hoja (desde el último padre, índice n/2 - 1, hasta la raíz) convierte cualquier arreglo en un max-heap.
  • Fase de ordenación: cada paso mueve el máximo actual al final y reduce el tamaño del heap, de modo que el arreglo se va llenando de forma ordenada desde atrás hacia adelante.

Pruébalo tú mismo

Esta lección no incluye un desafío de código.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Heap Sort - Serie de DSA