Там теоретический результат , который говорит, что любая структура данных, представляющая упорядоченный список, не может иметь все операции вставки, поиска по индексу, удаления и обновления, которые занимают больше времени, чем O (log n / log log n) , поэтому такой структуры данных не существует.
Однако есть структуры данных, которые очень близки к этому. Например, дерево статистики порядка позволяет выполнять вставку, удаление, поиск и обновление в любом месте списка за время O (log n) за штуку. Это достаточно хорошо на практике, и вы можете найти реализацию в Интернете.
В зависимости от вашего c приложения могут быть альтернативные структуры данных, которые больше подходят для ваших нужд. Например, если вас интересует только поиск наименьшего / наибольшего элемента в каждый момент времени, тогда такая структура данных, как куча Фибоначчи , может соответствовать всем требованиям. (Куча Фибоначчи на практике обычно работает медленнее, чем обычная двоичная куча, но связанная с ней куча сопряжения имеет тенденцию работать очень быстро.) Если вы часто обновляете диапазоны элементов путем добавления или вычитания из них, тогда Дерево Фенвика может быть лучше.
Надеюсь, это поможет!