Montón
Heap es una estructura de datos que se usa específicamente para acceder al valor mínimo o máximo en el tiempo O (1) mientras que su tiempo de inserción o eliminación es O (log (n).
Montón mínimo
- ¿Cuál es el algoritmo para resolver el buscaminas?
- ¿Se puede utilizar el algoritmo de red neuronal artificial en un conjunto de datos dinámicos como el clima o el tráfico?
- Cómo aprender 'algoritmos' sobre los que el mundo tecnológico está hablando y aplicarlos a mi vida cotidiana
- Cómo aprender la estrategia de algoritmos
- Cómo entender la notación big-O
Max heap
Pero el truco está aquí, tiene que usar una matriz para almacenar el montón.
Entonces accederá a Array [0] para mínimo o máximo
Implementación
Sea n el número de elementos en el montón y yo sea un índice válido arbitrario de la matriz que almacena el montón. Si la raíz del árbol está en el índice 0, con índices válidos de 0 a n – 1, entonces cada elemento a en el índice i tiene
- niños en los índices 2 i + 1 y 2 i + 2
- su padre en el piso índice (( i – 1) ∕ 2).
Alternativamente, si la raíz del árbol está en el índice 1, con índices válidos del 1 al n , entonces cada elemento a en el índice i tiene
- niños en los índices 2 i y 2 i +1
- su padre en el piso índice ( i ∕ 2).
Algoritmo de inserción
Ahora, expresemos un algoritmo general para insertar un nuevo elemento en un montón.
- Agregue un nuevo elemento al final de una matriz;
- Tamice el nuevo elemento, mientras que la propiedad de montón está rota. El tamizado se realiza de la siguiente manera: compare el valor del nodo con el valor principal. Si están en el orden incorrecto, cámbielos.
Algoritmo de eliminación
- Copie el último valor en la matriz a la raíz;
- Disminuya el tamaño del montón en 1;
- Tamizar el valor de la raíz. El cribado se realiza de la siguiente manera: si el nodo actual no tiene hijos, el cribado ha terminado; si el nodo actual tiene un hijo: verifique, si la propiedad del montón está rota, luego intercambie el valor del nodo actual y el valor hijo; tamizar hacia abajo el niño; si el nodo actual tiene dos hijos: encuentre el más pequeño de ellos. Si la propiedad del montón está rota, entonces intercambie el valor del nodo actual y el valor secundario seleccionado; tamizar al niño.
Explicación teórica completa Montón binario – Wikipedia
Implementación Básica Heap Binario – GeeksQuiz
Implementación avanzada BINARY HEAP (Java, C ++)
Enlace rápido para la representación interna basada en matrices REPRESENTACIÓN INTERNA DEL HEAP BINARIO BASADO EN ARRAY (Java, C ++)
Enlace rápido para inserción INSERCIÓN DE UN ELEMENTO EN UN HEAP (Java, C ++)
Enlace rápido para eliminar ELIMINANDO EL MÍNIMO DE UN HEAP (Java, C ++)