Подумав, я пришел к выводу, что мне нужна структура данных, которая поддерживает:
- Вставить
- Удалить
- Найти
- Удалить минимум
конечно, я хочу реализовать это как можно лучше.
Я думаю, что самообалансирующееся дерево двоичного поиска будет выполнять A-D в O (log (n)) (наихудший случай).
Возможно, это можно как-то улучшить, так что A-C будет в O (log (n)), а D (что, я думаю, будет чаще) будет работать в O (1).
Я делаю анализ наихудшего случая, но если вы можете придумать что-то, что будет работать «быстро», но это амортизированный анализ или в среднем, тогда это не проблема.
приветствуется любое улучшение того, что я имею в виду!
(примечание: я считаю, что A и D будут гораздо чаще, чем B и C)