Список отсортирован по ключу 1, произвольный доступ по ключу 2 - PullRequest
0 голосов
/ 03 февраля 2011

У меня есть список касаний {key1, key2}, отсортированных в соответствии с key1 с использованием дерева B +. Эта структура находится во вторичной памяти (HDD). Я хочу реализовать алгоритм, который требует списки, отсортированные по ключу 1, но также требует произвольного доступа к списку с ключом 2. Мне не нужен весь список для алгоритма, я получаю блоки с диска по мере необходимости, поэтому B + Tree прекрасно работает со всеми происходящими вставками и удалениями.

Я бьюсь головой в течение недели, и я думаю, что единственный способ - это использовать вторую структуру (например, второе B-дерево) с key2, но это удваивает и без того большое пространство, необходимое и время, необходимое для обновления дерево.

Я не знаю много о хеш-таблицах, но не думаю, что смогу сопоставить ключ с определенным значением с помощью этих ключей, верно?

Есть ли у вас какие-либо идеи о структуре, которая могла бы предоставить мне произвольный доступ к ключу 2 без удвоения данных?

В качестве альтернативы я мог бы использовать альтернативный алгоритм, который не требует произвольного доступа, но я хочу оставить это как последнее решение.

Заранее спасибо

1 Ответ

0 голосов
/ 03 февраля 2011

Я думаю, что лучший способ, если вы беспокоитесь о скорости, это создать хеш-таблицу, указывающую на key2.Хеш-таблицы обычно быстрее при вставках и поисках, чем B-деревья.И вам не нужно будет удваивать все данные, просто укажите от хеш-таблицы до key2 в вашей существующей структуре.

Обновление: если вы не работали с хеш-таблицами, прочитайте:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...