Здравствуйте, mDmitriy, Вы писали:
D>Всем привет!
D>Есть таблица с записями такой структуры (числовые диапазоны [FirstNumber..EndNumber] не пересекаются):
D>D>internal class Range
D>{
D> internal ulong FirstNumber;
D> internal ulong EndNumber;
D> internal string Data;
D>|
D>
D>Записей несколько сотен тысяч
D>Надо загнать ее в память (в какую-нибудь структуру) и быстро по числу найти запись с диапазоном, в который входит это число
D>Что посоветуете в смысле алгоритма поиска? Нужен быстрый, перебором не пойдет...
D>Спасибо
https://msdn.microsoft.com/ru-ru/library/a1s5syxa(v=vs.110).aspx
public int BinarySearch(
int index,
int count,
T item,
IComparer<T> comparer
)
В компарере сравниваете только FirstNumber. Сможете написать его сами?
Метод вернет или индекс элемента у которого some == FirstNumber, или индекс ближайшего элемента.
Если второе то проверте ближайший элемент списка.
P.S. Это если апдейтов нет между поисками. Если апдейты есть, то тут уже написали — ищите реализацию B-дерева про которое Sinix выше написал.
P.P.S. по моему сначала вам надо бы хотя бы википедию прочитать про бинарный поиск и бинарные деревья.