Вы можете создать список диапазонов с начальными и конечными значениями. Сортировать этот список по начальному значению.
Когда вы получите запрос, выполните бинарный поиск по начальным значениям. Когда ваше значение больше или равно начальному значению и меньше или равно конечному значению, вы знаете, что получили правильный диапазон.
Если у вас относительно небольшой общий диапазон (скажем, целые числа от 1 до 1000), вы можете предварительно заполнить массив ссылок на диапазоны. Допустим, у вас есть 4 диапазона и возможные значения запроса от 0 до 10:
range1: 0, 2
range2: 3, 5
range3: 6, 8
range4: 7, 10
Тогда ваш массив будет [range1, range1, range1, range2, range2, range2, range3, range3, range3, range4, range4, range4, range4]
.
Вы можете расширить его до желаемого размера, в зависимости от того, сколько памяти вы хотите потратить. Это дает вам прямой поиск.