Zastanawiam się, jakie jest najlepsze podejście do tego obliczenia. Załóżmy, że mam wejściową tablicę wartości i tablicę granic - chciałem obliczyć/rozproszyć rozkład częstotliwości dla każdego segmentu w tablicy granic.Jaki jest najszybszy sposób obliczenia rozkładu częstotliwości dla tablicy w C#?
Czy warto skorzystać z wyszukiwania kubełkowego?
Właściwie znalazłem na to pytanie Calculating frequency distribution of a collection with .Net/C#
Ale ja nie rozumiem, jak używać łyżki do tego celu powoduje, że wielkość każdego segmentu może być różny w mojej sytuacji.
EDYCJA: Po wszystkich dyskusjach mam rozwiązanie pętli wewnętrznej/zewnętrznej, ale nadal chcę wyeliminować wewnętrzną pętlę ze Słownikiem, aby uzyskać w tym przypadku wydajność O (n), jeśli dobrze zrozumiałem, potrzebuję wejścia mieszającego wartości do indeksu wiadra. A więc potrzebujemy jakiejś funkcji mieszającej o złożoności O (1)? Jakieś pomysły, jak to zrobić?
można opisać tablicę granice trochę lepiej? Czy istnieje jakaś zależność między różnymi granicami (tj. Czy są one sekwencyjne) czy są one całkowicie losowe pod względem wielkości i "położenia"? Zakładam, że tablica granic całkowicie pokrywa zakres możliwych wartości - czy to prawda? Zakładam też, że nie ma nakładania się - prawda? –
najszybciej w znaczeniu wielkiego "O" czy w znaczeniu małego kodu? Prostym podejściem byłoby napisanie sobie funkcji Func i użycie jej z Linqs .GroupBy do zgrupowania tego w "Buckets" - ale może być na to szybsze obliczeniowo rozwiązanie. –
Carsten
Tak, masz rację. Wartości graniczne mają monotonicznie rosnącą wartość. Nie pokrywają się one i obejmują zakres możliwych wartości. Na przykład: 0, 10, 50, 100, 120. – Andrey