Uploaded by Rmont5ec

AAheapsort

advertisement
Algoritmo Heap-sort
Ordenamiento in -situ = no utiliza memoria adicional para realizar los ordenamientos
Un heap puede ser visto como un árbol binario completo
¿Qué es un árbol binario completo?
Un árbol binario tiene dos hijos como mucho, y para que sea considerado completo, todos sus niveles,
hasta el penúltimo nivel están completos, y que el ultimo nivel a lo mucho esta completo de izquierda a
derecha.
Max heap= el mayor valor estará colocado en la raíz
Min heap= el menor valor estará colocado en la raíz
Para representar un árbol binario completo como un arreglo:





El nodo raíz A[1]
EL I-esimo nodo es A[i]
El padre del nodo i es A[i/2]
El hijo izquierdo del nodo i es A[2i]
El hijo derecho del nodo i es A[2i+1]
Propiedad heap:
A[parent(i)] >= A[i]


La altura de un nodo en un árbol es igual al numero de arcos de la ruta mas larga hacia una hoja
La altura de un árbol = la altura de su raíz
El elemento máximo de un max heap se encuentra en la raíz
Un heap de n elementos tiene altura de
H= 𝑙𝑜𝑔2 (𝑛 + 1)
Heapify(): mantiene la propiedad del heap.
Heapsort: utiliza menos memoria ya que es in situ, también usa el paradigma divide y conquistar
El secreto de Quicksort es: casi no realiza intercambios de elementos innecesarios. El intercambio lleva
mucho tiempo.
Con Heapsort, incluso si todos sus datos ya están ordenados, intercambiará el 100% de los elementos
para ordenar la matriz.
Con Mergesort, es aún peor. Va a escribir el 100% de los elementos en otra matriz y volver a escribirla
en la original, incluso si los datos ya están ordenados.
Lo que es superior en Quicksort no es el peor de los casos, ¡sino el mejor de los casos! En el mejor de los
casos, haces la misma cantidad de comparaciones, está bien, pero no cambias casi nada. En el caso
medio, intercambia parte de los elementos, pero no todos, como en Heapsort y Mergesort. Eso es lo
que le da a Quicksort el mejor momento. Menos intercambio, más velocidad.
Download