Мне просто интересно, какой лучший подход для этого расчета. Предположим, что у меня есть входной массив значений и массив границ - я хотел рассчитать/bucketize распределение частот для каждого сегмента в массиве границ.Каков самый быстрый способ рассчитать распределение частот для массива в C#?
Полезно ли использовать поиск в ковше для этого?
На самом деле я обнаружил, что вопрос Calculating frequency distribution of a collection with .Net/C#
Но я не понимаю, как использовать ведра для этой цели вызвать размер каждого сегмента может быть различным в моей ситуации.
EDIT: После всех обсуждений у меня есть решение для внутреннего/внешнего контура, но все же я хочу исключить внутреннюю петлю с помощью словаря, чтобы получить производительность O (n) в этом случае, если я правильно понял, мне нужен хэш-вход значения в индекс ковша. Итак, нам нужна какая-то хеш-функция с сложностью O (1)? Есть идеи, как это сделать?
Вы можете описать массив границ немного лучше? Существует ли какая-либо взаимосвязь между различными границами (т. Е. Они являются последовательными) или они полностью случайны по размеру и «местоположению»? Я предполагаю, что массив границ полностью охватывает диапазон возможных значений - это правда? Кроме того, я предполагаю, что нет совпадений - правильно? –
самый быстрый в значении большого «О» или в смысле небольшого кода? Простым подходом было бы написать себе функцию Func и использовать ее с Linqs .GroupBy, чтобы сгруппировать ее в «Ведра», но для этого могут быть более быстрые способы вычисления. –
Carsten
Да, вы правы. Граничные значения монотонно возрастают по значению. Они не перекрываются и охватывают диапазон возможных значений. Так, например: 0, 10, 50, 100, 120. – Andrey