回答
使用java.util.Arrays.sort(Object[] a, Comparator c)
,執行Comparator
,根據您的要求進行排序。
我們打電話給你的「y金額」bin。您聲明您希望將您的物品分配到所有垃圾箱之間。
一個具有類似屬性的結構是平衡樹。接下來我要做的是以下幾點。首先,使用所選屬性作爲關鍵字填充一棵平衡樹。接下來,下降到樹的期望水平,使得該水平上有N個元素,N是你想要的數量。將來自每個節點的所有元素派生到一個單獨的容器中。
然後,剩下的唯一一件事就是將這個級別上的節點上的元素分配到bin中。只需選擇一個標準來選擇它將要運行的倉庫並應用它。你的箱子應該合理平衡。
我可能會這樣做,的Map
索引的屬性。例如:
Map<K, Set<V>> results = new HashMap<K, Set<V>>();
for (V item : items) {
K key = item.getProperty();
Set<V> group = results.get(key);
if (group == null) {
group = new HashSet<V>();
results.put(key, group);
}
group.add(item);
}
其中V是您的物品的類型,K是物業的類型。
好的,這個答案不再相關,因爲你已經完全重新構造了這個問題:-) – Olivier 2009-07-15 15:02:23
這是Partition problem推廣到y
組而不是2.問題爲y=2
是弱NP-硬,所以存在一個僞多項式算法,有效地解決了它,只要權重是小的整數。
我在哪裏可以找到這個算法的例子,最好是java。 – Dupdroid 2009-07-15 14:56:04
- 1. 將數組數分爲2個平衡數組
- 2. 分組項目
- 3. Linq - 將項目分組在多個組中的分組?
- 4. 將列表中的項目分配到數組中的項目
- 5. 將類似項目分組到一個數組
- 6. CollectionViewSource將一個項目分組到多個組
- 7. 將對話項目分組到單個「組」(Visual Studio)
- 8. 如何在Python中對項目進行分組,以便可以將這些分組項目的平均值?
- 9. ListCollectionView分組已分組項目
- 10. 將不平衡的行組合到一個數據框中
- 11. 平衡分
- 12. 將多行項目分組爲單行
- 13. 平衡不平衡/部分平衡BST的複雜性?
- 14. 將dask.bag項目分組到不同的分區
- 15. 使用xslt(muenchian分組)編組平板xml,無法將其分組到
- 16. XSL到組項目
- 17. 平衡httpd和保存項目文件
- 18. 在組合框中分組項目
- 19. 按組排列分組項目
- 20. 如何將項目放入按特定鍵分組的分組數組中
- 21. 拆分元組項目
- 22. 分組項目時一起
- 23. 取消分組項目
- 24. 分組的類似項目
- 25. 在php中分組項目
- 26. 在XML中分組項目
- 27. 多個分組項目
- 28. 項目分組在索引
- 29. 分組的XElement項目(LINQ)
- 30. 按鍵分組項目?
不要使用數組,請使用例如SortedMap>。 –
starblue
2009-07-15 13:30:40