У меня есть набор элементов (больших рациональностей), которые я буду обрабатывать. В каждом случае обработка будет состоять из удаления самого маленького элемента в коллекции, выполнения некоторой работы, а затем добавления 0-2 новых элементов (которые всегда будут больше, чем удаленный элемент). Коллекция будет инициализирована одним элементом, и работа будет продолжаться до тех пор, пока она не станет пустой. Я не уверен, какой размер собирает коллекция, но я ожидал бы в диапазоне 1M-100M элементов. Мне не нужно искать какой-либо предмет, отличный от самого маленького.
В настоящее время я планирую использовать красно-черное дерево, возможно, измененное, чтобы держать указатель на наименьший элемент. Тем не менее, я никогда раньше не использовал его, и я не уверен, хорошо ли он соответствует моим характеристикам.
1) Есть ли опасность, что шаблон удаления из левой + случайной вставки повлияет на производительность, например, если требуется значительно большее число оборотов, чем случайное удаление? Или удалять и вставлять операции по-прежнему O (log n) с использованием этого шаблона?
2) Может ли какая-нибудь другая структура данных повысить производительность, либо из-за шаблона удаления, либо с учетом того факта, что мне когда-либо нужно найти наименьший элемент?
Обновить: рад, что я спросил, двоичная куча, безусловно, является лучшим решением для этого случая, и, как было обещано, было очень легко реализовать.
Уго