Оптимальная древовидная структура данных для объединения последовательных данных в реальном времени - PullRequest
0 голосов
/ 24 февраля 2020

Я работаю над проектом в C, где мне нужно хранить, сортировать и обновлять информацию, полученную в режиме реального времени. Максимальное количество информации, которое я могу иметь, определено. Полученная информация <key,value1,value2>, но сортируется по ключу и значению1. Ключ будет указывать на начало узла, а значение1 будет указывать на его размер.
Основные операции c, которые мне нужно будет выполнить, это вставка, поиск, удаление, но, что наиболее важно, объединение, если я найду последовательную информацию. Например, в пустой структуре я ввожу <100,1> - это создаст один узел.
Далее, если я введу <102,2> - это создаст другой узел. Таким образом, в дереве будет 2 узла.
Далее, если я введу <101,1> - это должно в конце создать только один узел в дереве: <100,4>

Я также хочу отдельно отсортировать эти узлы в соответствии с их значением2. Обратите внимание, что значение2 можно обновлять в режиме реального времени.

Я думал о дереве B + из-за его логарифмической производительности c во всех случаях, поскольку все конечные узлы находятся на одном уровне. И используя отдельный двусвязный список, я могу создавать отдельные ссылки для сортировки узлов по значению2. Но издержки на сортировку по <key,value1> были бы в том случае, если бы мне всегда приходилось выполнять операцию поиска; для слияния, для добавления и для удаления.

Есть какие-нибудь мысли / предложения по этому поводу?

...