比较Java中多个数组中相应值的更好方法

时间:2012-09-10 01:40:53

标签: java arrays algorithm arraylist compare

我有一个包含M列表的ArraysList,这些列表已经过排序。 Arraylist中的每个列表都具有相同的大小N。现在,我想将每个列表中的第一个(N-1)对应值与其他值进行比较,我希望找到具有相同第一个(N-1)值的列表。直观地说,它可以通过两个for循环来完成,但复杂性可能高达M*N*N。我想知道是否有更好的算法来做到这一点。顺便说一句,M可能是一个非常大的数字,而N往往是一个较小的数字。

对不起,我可能不太清楚。我希望最终输出是具有相同的第一个(N-1)值的列表对。

2 个答案:

答案 0 :(得分:3)

使用良好的散列算法计算每行N-1项的哈希码。按哈希代码组织行,并仅在哈希码匹配时进行完整比较。

答案 1 :(得分:0)

对列表列表进行排序。

对它们进行排序为O(N M LOG M)(假设比较为O(N))。

如果你在基数排序方法中这样做,它实际上应该更多地在O(N * M)或甚至O(M LOG M)总共(假设列表不相同)。

然后在此列表中必须跟随具有相同前缀的列表。

假设您正在尝试重新实现APRIORI:是的,执行保留候选项集的排序列表。这正是Apriori-Gen为建立下一轮候选人所需要的。将它们组织成一个排序树非常整洁,因为在扫描数据库计算项目集时这也很快。