好的,我有两个集合,我需要将 collection1 中的元素放入 collection2 的 bin(元素)中,具体取决于它们的值是否在给定 bin 的范围内。
举一个具体的例子,假设我有一个排序的集合对象(bins),它有一个 int 范围([1...4]、[5..10] 等)。我需要确定 int 的范围,并将其放在适当的 bin 中。
foreach(element n in collection1) {
foreach(bin m in collection2) {
if (m.inRange(n)) {
m.add(n);
break;
}
}
}
所以明显的 NxM 复杂度算法就在那里,但我真的很想看到 Nxlog(M)。为此,我想使用 BinarySearch 代替内部 foreach 循环。要使用 BinarySearch,我需要实现一个 IComparer 类来为我进行搜索。我遇到的问题是这种方法需要我创建一个 IComparer.Compare 函数来比较两种不同类型的对象(一个元素到它的 bin),这似乎不可能或不正确。所以我在问,我应该如何编写这个算法?