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



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

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

使用一个好的哈希算法来计算每行中N-1项的哈希代码。按行的哈希代码组织行,只有当哈希代码匹配时才进行完全比较。

对列表列表进行排序。

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

如果使用基数排序方法,它实际上应该更多地位于O(N * M)甚至O(M LOG M)合计的行上(假设列表不相同)。

则具有相同前缀的列表必须在该列表的后面。

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

相关内容

  • 没有找到相关文章

最新更新