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.
sizees 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.
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
2The Algorithm
How it works?Pseudo CodeImplementation (Part 1)Implementation (Part 2)