Acabo de notar algo y me pregunto si hay alguna razón para eso. A excepción de C ++ (std :: priority_queue es un montón máximo), no conozco ningún otro lenguaje que ofrezca un montón máximo.
El módulo heapq de Python implementa un min-montón dinámico binario en la parte superior de una lista.
La biblioteca de Java contiene una clase PriorityQueue, que implementa una cola de prioridad mínima.
La biblioteca de Go contiene un módulo contenedor / almacenamiento dinámico, que implementa un almacenamiento dinámico mínimo sobre cualquier estructura de datos compatible.
El marco de la Core Foundation de Apple contiene una estructura CFBinaryHeap, que implementa un montón mínimo.
Encuentro un max-heap más intuitivo que un min-heap y creo que técnicamente la diferencia de implementación es solo una cuestión de cambiar un operador de comparación. ¿Hay alguna razón real? ¿La mayoría de las aplicaciones necesitan un mínimo en lugar de un máximo de almacenamiento dinámico? Gracias por adelantado
fuente
std::not2(std::less<T>())
.