データとして文字列値を含む大きな配列があります。この配列を最適化したいので、できるだけ早く特定の文字列が配列に存在するかどうかを確認するクエリを実行できます。だから、
$arr= [];
で配列を作成するとしましょうそして、次のような値を追加します。
foreach($names as $name)
$arr[]= $name;
そして今、私は
if(in_array($random_string, $arr))
のような多くのクエリを実行したい
、しかしそれはかなり遅いです。パフォーマンスを最適化するために、配列にインデックスを追加したいと思います。単に
sort()
を使用する必要がありますか配列の機能?
文字列がクエリに存在するかどうかをチェックするために、文字列データで配列を最適化する方法は?
編集:いいえ、明らかにこれは「より高速なもの:in_arrayまたはisset?[closed]」の複製ではなく、vivek_23による回答ですでに確認できます。
回答 1 件
関連記事
- 最初と最後の文字をチェックするときのPython文字列の問題
- 文字列内の各文字をチェックすると、間違った順序で出力されますか?
- シェル:文字列に指定された文字が含まれているかどうかを確認します
- キーがordereddictに存在するかどうかを確認する
- 文字列の列挙型に文字列が存在するかどうかを確認するにはどうすればよいですか?
- Ruby、正規表現を使用して配列にアイテムが存在するかどうかを確認する
- BeautifulSoupを使用して、動的に生成されたページに文字列が存在するかどうかを確認します
- 有効なJSONではない文字列から配列を抽出する
- Pythonチェックはすでにリスト内の要素に存在します
- cのスタックを使用して文字列内のバランスの取れた括弧をチェックする
sorting
を行うことをお勧めしますbinary search
とvalue
かどうかを知る 存在します。時間の複雑さはO(N log N)
になります ソートおよびO(log N)
用 個々の要素を検索します。ここで、N
配列内の要素の数です。関連する配列を作成し、
isset()
の助けを借りて確認することもできます。 値が存在するかどうかを確認します。ただし、キーをハッシュすると、PHPがハッシュ構造を内部的に管理することになり、big string arrays
があるため、メモリを少し消費します 。また、isset($arr['some_key'])
を使用して 必ずしもO(1)
であるとは限りません 衝突による操作。以下は、バイナリ検索アプローチを使用する私のコードです-
上記の機能をテストするためのドライバーコード-