【发布时间】:2015-04-12 21:41:53
【问题描述】:
什么是检查数组中的值以查看所有值是否存在的快速且成本最低的方法。
假设我有一个数组
$a = array(1,2,3,4,5,6);
我想将它与数组匹配
$b = array(6,5,1,3,2,4)
$c = array(1,9,2,3,4,5)
$d = array(6,5,4,3,2,1)
$e = array(1,2,3,4,5,6,7)
$f = array(2,3,4,1,5,6)
.....
etc, etc
在上面的 $a 将匹配 $b 和 $f,因为值是相同的,虽然不在同一个索引。
现在我知道我可以使用 foreach/in_array/array_search 等并遍历每个循环并尝试匹配值。如果数组大小增加并且我们拥有的数组数量增加,这可能会很快变得非常昂贵。我可能拥有 100 万到 200 万个以上的数组,然后以上述方式循环这些数组将是一场性能噩梦。
我的问题是实现这一目标的最佳方式是什么。你们会怎么做呢?任何想法都会有所帮助。谢谢
编辑 正如我在下面的 cmets 中提到的,我不是在寻找在被认为是重复的问题中给出的答案。我想要 O(1) 解决方案而不是 n^2。那里的解决方案对我没有帮助。我想我需要正确划分这个或子存储阵列等。想象一下 1-2 百万个阵列,现在想象 3 亿个这些阵列。该解决方案不会扩展。
【问题讨论】:
-
你排除了 foreach 吗?所以,没有循环...?
-
也许是array_diff函数?
-
我查看了这个解决方案stackoverflow.com/questions/7542694/in-array-multiple-values,但我不确定性能是否会更好
标签: php performance algorithm cakephp divide-and-conquer