(Dopo più di un anno, sono tornato quasi a caso in questa domanda, quindi ho deciso di rispondere alla mia domanda!)
Dopo alcune ricerche, ho finito per avere la sensazione che la struttura dei dati più intuitiva e appropriata (in realtà non ho fatto test di benchmark del mondo reale) per implementare una coda di priorità a doppio attacco è in realtà il min-max heap , che ha il suo proprio articolo di Wikipedia , che Ho cercato di migliorare in base al documento originale del 1986 ( di Atkinson, Sack, Santoro e Strothotte), ma per mancanza di tempo non ho finito di scrivere le descrizioni di tutte le sue operazioni. A proposito, sentiti libero di aiutarmi!
Come ho spiegato nell'articolo di Wikipedia:
...it provides constant time retrieval and logarithmic time removal of both the minimum and maximum elements in it.
Se vuoi conoscere maggiori dettagli sulla complessità temporale delle operazioni, dai un'occhiata al documento originale.
Ho anche implementato un min-max heap
in Python, per quelli di voi che stanno cercando un programma concreto. Sembra essere l'implementazione più affidabile che ho trovato finora, ma non escludo comunque gli errori, anche se ho anche creato dei test per questo.
https://github.com/nbro/ands/blob/master/ands/ds/MinMaxHeap.py
Si noti che questo programma fa parte di un modulo, cioè non si può semplicemente copiare il codice ed eseguirlo e qualcosa funziona. Per favore, leggi README
del progetto a cui ti sto collegando per maggiori informazioni su come usare quel modulo.