Я ищу структуру данных, которая хранит массив элементов и поддерживает следующие операции:
- Доступ к элементу по заданному индексу
- Добавление или удаление элемента по заданному индексу (и, следовательно, смещение следующих элементов)
Массивы выполняют первую операцию в O (1), а вторую берут O (n), а связанные списки - наоборот. Существует ли структура данных с промежуточными данными? Скажем, что-то, что может делать обе операции в O (lg n) или O (n ^ epsilon) "наихудшее" время?
Обратите внимание, что я не прошу сбалансированное двоичное дерево поиска. Здесь ключи (индексы) меняются и сдвигаются каждый раз, когда новый элемент добавляется/удаляется. Например, удаление наименьшего элемента уменьшает индексы для всех остальных элементов на 1.