|
|
1
4
使用C5 http://www.itu.dk/research/c5/
|
|
|
2
3
首先比较两种方法。 计数 第二种情况是顺序不同,您需要使用字典来存储集合中找到的元素计数:这里有一个可能的算法
|
|
|
3
3
对于有序集合,可以使用
|
|
|
4
2
你是说相同的条目还是相同顺序的条目? 无论如何,假设您想比较它们是否以相同的顺序包含相同的条目,“暴力”实际上是C#2.0中唯一的选项。我知道你说的不优雅是什么意思,但是如果原子比较本身是O(1),那么整个过程应该是O(N),而不是 令人不快的 |
|
|
5
1
哦,还有另一个建议-您可以覆盖集合类的Equals,并在其中实现equality(不过这取决于您的项目)。 |
|
|
6
1
同样,使用C5库,有两个集合,您可以使用: C5.ICollection<T> set1 = C5.ICollection<T> ();
C5.ICollection<T> set2 = C5.ICollecton<T> ();
if (set1.UnsequencedEquals (set2)) {
// Do something
}
C5库包括一个启发式程序,它首先实际测试两个集合的未排序散列码(参见
同样值得注意的是
|
|
|
7
0
暴力需要O(n)-比较所有元素(假设它们已排序),我认为这是最好的方法-除非数据的某些属性使其更容易。 我猜对于未排序的情况,它是O(n*n)。 merge sort 可能会有帮助。 例如,您是否可以对其重新建模,以便只有一个集合?或者3个集合,一个仅用于集合A中的集合,一个仅用于集合B中的集合,以及两个集合中的集合-因此,如果仅A和仅B为空-则它们是相同的。。。我可能走错了方向。。。 |
|
Sweepy Dodo · JSON lite的格式化 1 年前 |
|
|
giantjenga · 优化整数向量到二进制向量的转换 1 年前 |
|
Zegarek · Postgresql递归查询未提供预期结果 1 年前 |
|
|
Joe · 为什么这两个查询之间的性能存在如此大的差异? 2 年前 |
|
tic-toc-choc · 在`dplyr中高效使用列表进行过滤` 2 年前 |