Какую структуру данных или алгоритм можно использовать для поиска всех диапазонов, содержащих указанное значение, в массиве неизменяемых объектов, где объекты содержат начало и конец диапазона, а также другие данные; при этом диапазоны могут пересекаться и даже быть идентичными, а иногда конец диапазона не указан и считается, что это диапазон из одного элемента?
Для определения, в какой диапазон попадает значение, можно использовать простой цикл сравнения значения со значениями начала и конца каждого диапазона. Для поиска всех диапазонов, содержащих указанное значение, в массиве неизменяемых объектов, можно использовать алгоритм перебора всех объектов в массиве и проверку каждого диапазона на включение указанного значения. Для ускорения поиска можно предварительно отсортировать массив по началам диапазонов. Еще один способ - использовать структуру данных интервальное дерево (interval tree). Это структура данных, которая хранит интервалы и позволяет эффективно искать все пересекающиеся интервалы для данного значения. Также можно реализовать свой собственный алгоритм или структуру данных, применимый к конкретным условиям задачи.
попробуйте словарь вместо массива (или <a href="https://learn.microsoft.com/ru-ru/dotnet/standard/collections/sorted-collection-types" rel="nofollow">сходные типы</a> ) <br/> думаю других вариантов нет. от слова совсем <br/> <br/> ps есть еще разнообразные БД. но целесообразность зависит от объема данных в соотношении с доступной оперативкой.. <br/> <br/> pps если в достатке оперативка и ядра, то запрос plinq поможет