我只是想知道什麼是該計算的最佳方法。讓我們假設我有一個輸入數組和邊界數組 - 我想計算/ bucketize頻率分佈的每個分區在邊界數組中。在C#中計算數組頻率分佈的最快方法是什麼?
使用桶搜索是個好主意嗎?
其實我發現這個問題Calculating frequency distribution of a collection with .Net/C#
但我不知道如何使用爲目的的桶引起每個桶的大小,可以在我的情況不同。
編輯: 畢竟討論我有內部/外部循環解決方案,但仍然想消除內部循環與字典獲得O(N)性能在這種情況下,如果我理解正確我需要散列輸入值轉換爲存儲桶索引。所以我們需要某種具有O(1)複雜性的散列函數?任何想法如何做到這一點?
你能描述邊界陣列更好一點?各種邊界之間是否存在任何關係(即它們是連續的)還是它們在大小和「位置」上是完全隨機的?我假設邊界數組完全覆蓋了可能值的範圍 - 這是真的嗎?另外,我假設沒有重疊 - 對嗎? –
最快在大「O」的意思還是在小代碼的意思?一個簡單的方法是編寫一個函數Func並將其與Linqs .GroupBy一起使用,將其分組爲「桶」 - 但可能有更快的計算方法來執行此操作。 –
Carsten
是的,你是對的。邊界值是單調遞增的。它們沒有重疊,涵蓋了可能值的範圍。舉例來說:0,10,50,100,120。 – Andrey