2009-07-01 16 views
6

Tengo un conjunto de datos y quiero encontrar los artículos más grandes y más pequeños (varias veces), ¿cuál es la mejor manera de hacerlo?Cola de prioridad de doble terminación

Para cualquier persona interesada en la aplicación, estoy desarrollando un sistema de nivel de detalle y necesito encontrar los elementos con el mayor y menor error de espacio de pantalla, obviamente cada vez que subdivido/fusiono un elemento tengo que insertarlo en la cola, pero cada vez que la cámara se mueve todo el conjunto de datos cambia, por lo que podría ser mejor usar una lista ordenada y posponer la adición de elementos nuevos hasta la próxima vez que ordene (ya que ocurre con tanta frecuencia)

Respuesta

5

Puede usar a Min Max Montón tal como se describe en el documento Min-Max Heaps and Generalized Priority Queues:

una simple aplicación de doubl e terminó colas de prioridad es presentado. La estructura propuesta, llamada un montón mínimo-máximo, se puede construir en tiempo lineal; a diferencia de montones convencionales, permite que FindMin y FindMax se realicen en tiempo constante; Insertar, EliminarMin y Las operaciones DeleteMax se pueden realizar en tiempo logarítmico.

+0

Aha eso es perfecto! – Martin

Cuestiones relacionadas