我有一個任意的散列數組,散列元素是一個整數(稱之爲'id')。我想將這些散列排序爲多個桶(數組中的常量),其中每個桶都是「ids」的任意範圍(例如1-10,15-20,20-30)。什麼是最好的分類策略來做到這一點?有沒有可能沒有嵌套循環?將一組物品分類到桶中的最有效方法是什麼?
0
A
回答
1
如果桶的數量很少,那麼使用嵌套循環可能會更好。哈希上的外部循環,以及桶上的內部循環。 O(n*m)
。
如果哈希的數量,和水桶的數量很大,您可以:
hashes = sort(hashes)
buckets = sort(buckets) # sort by lower-bound of bucket
i = 0
foreach (hash in hashes) {
while (buckets[i].lower_bound > hash) {
i = i + 1
}
bucket[i].add(hash)
}
的基本遍歷哈希將其添加到當前桶並在需要時推進到下一桶。 O(n * log(n)+ m * log(m))
1
如果哈希值質量好,它們將呈現均勻分佈,因此您可以使用均勻分佈的桶來一次性分割集合。
如果您還希望在桶中排序的哈希值,請在桶中的所有內容之後使用正常的排序算法。然而,這將是一個不尋常的哈希使用。 (如果你不是試圖在桶內排序,那麼「排序」這個詞是不恰當的,你真正想要的是分區。)
0
你沒有提到語言/平臺,但爲了高效擊鍵(C#):
var histogram = new[] { 0, 10, 15, 20, 30, 40 };
var values = new[] { 12, 14, 5, 6, 7, 1, 34, 26, 17 };
var bars = values.GroupBy(v => histogram.First(b => v < b));
相關問題
- 1. 什麼是快速找到物品的有效方法?
- 2. 在iOS中將數組元素分組到桶中的最快方法是什麼?
- 3. 將UniDataSet複製到SQL Server的最有效方法是什麼?
- 4. 什麼是在Javascript中反轉數組的最有效方法?
- 5. 在Java中輸入數組的最有效方法是什麼?
- 6. 什麼是組合日期最有效的方法?
- 7. 迭代Perl數組的最有效方法是什麼?
- 8. 在python中生成一個組合的最有效的方法是什麼?
- 9. 在PHP中組合這個數組數組的最有效方法是什麼?
- 10. 在TensorFlow中計算Kronecker產品的最有效方法是什麼?
- 11. 分組這個列表對象的有效方法是什麼?
- 12. 什麼是將DataTable轉換爲對象的最有效方法[,]?
- 13. 將數據寫入文件的最有效方法是什麼?
- 14. 將標籤插入表格的最有效方法是什麼
- 15. 將ifstream讀入字符串的最有效方法是什麼?
- 16. 將「AppIcon」添加到Xcode項目中的最有效方法是什麼?
- 17. 將溫度值集合存儲到MYSQL中的最有效方法是什麼?
- 18. 找到兩個集合的最有效方法是什麼?
- 19. 寫出工廠方法最有效的方法是什麼?
- 20. 解析這一行文本的最有效方法是什麼?
- 21. 獲得當月第一天的最有效方法是什麼?
- 22. 在桶中查找數字的最快方法是什麼?
- 23. PHP:將類常量轉儲到數組中的最簡單方法是什麼
- 24. c - 將char *數組轉換爲int和float的最有效方法是什麼?
- 25. 將C++結構體編組爲C#的最有效方法是什麼?
- 26. 同一組變量對所有分類方法的效果是否最好?
- 27. 從另一個數組中刪除一個數組的所有元素的最有效方法是什麼?
- 28. 有效處理物體間碰撞檢測的最佳方法是什麼?
- 29. 什麼是緩衝MediaProjection的最後X分鐘的最有效方法
- 30. 在C++中讀取文件最後一行的最有效方法是什麼?