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