Traza de Heap Sort y construccion de monticulo
Fuente: Material del curso — Test: Merge Sort, Quick Sort y Heap Sort (quiz en linea)
Enunciado
Dado el siguiente arreglo:
El algoritmo Heap Sort funciona en dos fases: (1) construir un max-heap, (2) extraer repetidamente el maximo.
Fase 1: Construccion del Max-Heap
(a) Represente el arreglo como un arbol binario completo. Recuerde que para un nodo en la posicion (indexado desde 0):
- Hijo izquierdo:
- Hijo derecho:
- Padre:
(b) Aplique el procedimiento Build-Max-Heap (ejecutar heapify desde el ultimo nodo interno hacia la raiz). Muestre el arreglo despues de cada llamada a heapify.
Fase 2: Extraccion y ordenamiento
(c) Una vez construido el max-heap, realice las tres primeras extracciones del maximo:
- Intercambie la raiz con el ultimo elemento del heap.
- Reduzca el tamano del heap en 1.
- Ejecute
heapifyen la raiz.
Muestre el estado del arreglo despues de cada extraccion.
Analisis
(d) Cual es la complejidad de Build-Max-Heap? Aunque parece ser (ejecutar veces heapify con costo cada una), demuestre intuitivamente por que en realidad es .
(e) Cual es la complejidad total de Heap Sort? Es estable? Es in-place? Justifique cada respuesta.
(f) Compare Heap Sort con Quick Sort y Merge Sort completando la siguiente tabla:
| Criterio | Quick Sort | Merge Sort | Heap Sort |
|---|---|---|---|
| Mejor caso | |||
| Peor caso | |||
| Estable? | |||
| In-place? | |||
| Espacio extra |