Un montón es una estructura de datos parcialmente ordenada.
Una cola prioritaria se puede implementar de manera eficiente utilizando un montón.
También es muy útil para resolver ciertos problemas como:
1. Encontrar un elemento mínimo / máximo de una colección de elementos – O (1) tiempo
2. Encontrar el elemento K-th min / max: se puede resolver en tiempo O (k log N) utilizando el montón.
La estructura de datos del montón se utiliza en un algoritmo de ordenación muy simple y eficiente: el ordenamiento del montón que realiza la clasificación in situ de los elementos. Su peor complejidad es O (nlog n).
El almacenamiento dinámico no es útil cuando tenemos que buscar una clave de manera eficiente ya que no existe un orden relativo entre sus elementos a diferencia de un Árbol de búsqueda binaria.
- ¿Debo aprender primero "el lenguaje de programación que elegí" o "algoritmo y estructura de datos"?
- ¿Qué es un algoritmo? ¿Es simplemente una máquina de Turing? Si no, ¿qué es?
- ¿Cómo se pueden condensar hipergrafías construidas para problemas de flujo de red que implican minimizar el tiempo necesario para impulsar el flujo desde la fuente al sumidero?
- ¿Cuál es el mejor libro para aprender algoritmos genéticos? ¿Por qué?
- Trabajo muy duro para estudiar 13 horas al día durante más de 7 meses, pero todavía no puedo mejorar mi estructura de datos y habilidades de algoritmos, ¿qué debo hacer?
Una muy buena explicación de los montones: http://www.cs.cmu.edu/~adamchik/…