Структура данных для построения и поиска набора целочисленных диапазонов

У меня есть набор uint32 целых чисел, в наборе могут быть миллионы элементов. 50-70% из них являются последовательными, но во входном потоке они появляются в непредсказуемом порядке.

Мне нужно:

  1. Сжать этот набор в диапазоны, чтобы добиться эффективного представления пространства. Уже реализовано это с использованием тривиального алгоритма, так как диапазоны, вычисленные только один раз, скорость здесь не важна. После этого преобразования количество результирующих диапазонов обычно находится в пределах 5 000–10 000, многие из них, конечно, состоят из одного элемента.

  2. Проверка принадлежности некоторого целого числа, информация о конкретном диапазоне в наборе не требуется. Этот должен быть очень быстрым - O (1). Подумал о минимальных идеальных хэш-функциях , но они плохо работают с диапазонами. Битовые наборы очень неэффективны по пространству. Другие структуры, такие как бинарные деревья, Я использую win 7 на моем Dell Vostro ...

    Как я могу подключить беспроводной сетевой адаптер к рабочей станции wmvare? (Моя основная ОС - Win Seven Ultimate, моя гостевая ОС - Fedora 13, а моя версия VMWare - 6.5.0. ) Я использую седьмую версию на своем ноутбуке Dell Vostro A860, а мой адаптер беспроводной сети - Atheros.

25
задан Kara 7 March 2014 в 20:25
поделиться