¿Cuál es la complejidad temporal del montón y el tipo de montón?

Heap Sort [1] tiene complejidades de tiempo O(nlogn) para todos los casos (mejor caso, caso promedio y peor caso).

Déjanos entender la razón por la cual. La altura de un árbol binario completo que contiene n elementos es log(n)

Para heapificar por completo un elemento cuyos subárboles ya tienen un montón máximo, debemos seguir comparando el elemento con sus elementos secundarios izquierdo y derecho y empujarlo hacia abajo hasta que llegue a un punto en el que sus elementos secundarios sean más pequeños que él.

En el peor de los casos, tendremos que mover un elemento desde la raíz al nodo hoja haciendo un múltiplo de log(n) comparaciones e intercambios.

Durante la etapa build_max_heap, hacemos eso para n/2 elementos, por lo que la peor complejidad del paso build_heap es n/2*log(n) ~ nlogn .

Durante el paso de clasificación, intercambiamos el elemento raíz con el último elemento y heapificamos el elemento raíz. Para cada elemento, esto requiere de logn peor tiempo porque podríamos tener que llevar el elemento desde la raíz hasta la hoja. Como repetimos esto n veces, el paso nlogn también es nlogn .

Además, dado que los pasos build_max_heap y heap_sort se ejecutan uno tras otro, la complejidad algorítmica no se multiplica y permanece en el orden de nlogn .

También realiza la clasificación en O(1) complejidad del espacio. En comparación con Quick Sort, tiene el peor de los casos ( O(nlogn) ) . La clasificación rápida tiene complejidad O(n^2) para el peor de los casos. Pero en otros casos, Quick Sort es rápido. Introsort es una alternativa al heapsort que combina quicksort y heapsort para conservar las ventajas de ambos: la peor velocidad de heapsort y la velocidad promedio de quicksort.

Notas al pie

[1] Algoritmo de ordenación del montón

Puedes construir tu montón en O (n). Luego, saca elementos, uno a la vez, y cada uno toma tiempo O (log n). Esto toma O (n log n) tiempo total.

La complejidad de la ordenación del montón es O (n log n). Para más detalles, consulte http://sadakurapati.wordpress.co