я в настоящее время (концептуально) имеем:Соответствующая структура данных для быстрого поиска «между» парами длинных
IEnumerable<Tuple<long, long, Guid>>
дал long
, мне нужно найти «соответствующий» GUID
.
пары long
с никогда не должны перекрываться, хотя могут быть промежутки между парами, например:
1, 10, 366586BD-3980-4BD6-AFEB-45C19E8FC989
11, 15, 920EA34B-246B-41B0-92AF-D03E0AAA2692
20, 30, 07F9ED50-4FC7-431F-A9E6-783B87B78D0C
Для каждого входа long
, должно быть точно 0
или 1
GUID
соответствие с.
так что вход 7
, должен вернуть 366586BD-3980-4BD6-AFEB-45C19E8FC989
ввод 16
должен возвращать null
Update: У меня есть около 90K пар
Как я должен хранить это в памяти для быстрый поиск?
Благодаря
Другой я наткнулся на концепции пальца дерева. У меня не было времени проверить, что это такое, но это может стоить попробовать. http://dnovatchev.wordpress.com/2008/07/20/the-swiss-army-knife-of-data-structures-in-c/ –
@ Давид, почему вы изменили мой вопрос? Это не то, что я прошу .... –
@AndrewBullock, я хочу помочь, а не беспокоить. Я видел, что ты вернулась назад, извини. – David