使用php数组比较大量值

时间:2011-04-04 02:09:00

标签: php arrays largenumber

我必须比较两个非常大量的值,因为我将它们放在数组中,但它不起作用。以下是我使用的代码。这是最有效的方式吗?我已经将时间和记忆设置为无限制。 error 101 (connection reset) unknown error这是chrome显示的错误

for ($k = 0; $k < sizeof($pid); $k++) {
    $out = 0;
    for ($m = 0; $m < sizeof($oid); $m++) {
        if ($pid[$k] == $oid[$m]) // $pid have 300000 indexes
        //and $oid have about 500000 indexes               
        {
            $out++;
        }

    }
    if ($out) {
        echo "OID for ID ".$pid[$k]." = ".$out;
        echo "<br>";
    } 
}

1 个答案:

答案 0 :(得分:0)

不工作怎么样?不会给你答案吗?你正在比较每一对可能的。这有多少种组合?超过10 ^ 13。如果您没有先耗尽内存,那么在现代机器上需要花费一个小时的时间。

更有效的方法是首先对它们进行排序:NlogN + MlogM + N + M时间而不是N * M时间。
使用比较排序对大小x的列表进行排序需要x*log(x) time。然后,您可以从每个列表的前面走一次,相信如果有任何匹配,您将找到它们。这需要线性时间。