Мне нужна структура данных, которая в основном представляет собой список точек данных, где каждая точка данных имеет метку времени и двойное [] значений данных. Я хочу иметь возможность получить ближайшую точку к заданной временной метке или все точки в указанном диапазоне временных меток.
Я использую С#. я думал, что использование обычного списка было бы возможно, где «datapoint» — это класс, который содержит поля timestamp и double[]. затем, чтобы вставить, я бы использовал встроенный двоичный поиск(), чтобы найти, куда вставить новые данные, и я мог бы использовать его снова, чтобы найти индексы начала/конца для поиска диапазона.
Сначала я попробовал отсортированные списки, но похоже, что вы не можете перебирать индексы i = 0,1,2,..., n, только через ключи, поэтому я не был уверен, как выполнить поиск по диапазону без какой-то запутанной функции .
но потом я узнал, что list‹> вставки () является o (n) ... не мог бы я сделать лучше, чем это, не жертвуя в другом месте?
в качестве альтернативы, есть ли какой-нибудь хороший запрос linq, который сделает все, что я хочу, в одной строке?