structura de datos que siempre mantiene los mejores elementos
Necesito una estructura de datos que siempre contenga eln
elementos más grandes insertados hasta ahora (sin ningún orden en particular).
Así que sin
es 3, podríamos tener la siguiente sesión donde inserto algunos números y el contenido del contenedor cambia:
[] // now insert 1
[1] // now insert 0
[1,0] // now insert 4
[1,0,4] // now insert 3
[1,4,3] // now insert 0
[1,4,3] // now insert 3
[4,3,3]
Ya entiendes la idea. ¿Cuál es el nombre de la estructura de datos? ¿Cuál es la mejor manera de implementar esto? ¿O está esto en alguna biblioteca?
stoy pensando en usar un contenedor que tenga unpriority_queue
para sus elementos (delegación), que utiliza la comparación inversa, entoncespop
eliminará el elemento más pequeño. Entonces elinsert
a función @ primero verifica si el nuevo elemento a insertar es mayor que el más pequeño. Si es así, tiramos el más pequeño y empujamos el nuevo elemento.
(Tengo unC++
implementación en mente, pero la pregunta es independiente del lenguaje, sin embargo.)