-1

2 つの非常に多数の値を比較する必要があるため、それらを配列に入れましたが、機能しませんでした。以下は私が使用するコードです。これが最も効率的な方法ですか?時間とメモリも無制限に設定しました。error 101 (connection reset) unknown errorこれはクロムによって表示されるエラーです

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>";
    } 
}
4

1 に答える 1

0

どのように機能しませんか?答えてくれない?
可能なすべてのペアを比較しています。それはいくつの組み合わせですか?10^13 以上。最初にメモリを使い果たしなければ、最新のマシンで 1 時間ほどかかるでしょう。

より効率的な方法は、それらを最初にソートすることです: N*M 時間ではなく、NlogN + MlogM + N + M 時間です。
サイズ x のリストを比較ソートでソートするには、x*log(x) 時間かかります。次に、各リストの先頭から 1 回歩いて、一致するものがあれば確実に見つけることができます。これには線形時間がかかります。

于 2011-04-04T02:13:05.090 に答える