半倍検索(バイナリ検索とも呼ばれます)は、順序付けられた配列でターゲット要素を見つけるための効率的なアルゴリズムです。アルゴリズムは、ターゲット値のサイズをターゲット要素が見つかるまで、または存在しないと判断されるまで、ターゲット値のサイズを中間要素と比較して、アレイを2つの半分に連続的に分割することにより、検索範囲を徐々に狭めます。
折りたたみ式のハーフルックアップのコアステップは次のとおりです。
1.アレイの開始位置を左に設定し、端に右にエンド位置を設定します。
2。中間位置MID =(左 +右) / 2を計算します。
3.ターゲット値を中間位置要素と比較してください。
4.ターゲット値が見つかるか、右>右に左に見つかるまで、上記の手順を繰り返し、検索が失敗します。
次のPHPコードは、ハーフファインディング検索アルゴリズムを実装しています。
function binarySearch($arr, $target) {
$left = 0;
$right = count($arr) - 1;
while ($left <= $right) {
$mid = intval(($left + $right) / 2);
if ($arr[$mid] == $target) {
return $mid; // 配列内のターゲット値のインデックスを返します
}
if ($arr[$mid] < $target) {
$left = $mid + 1; // 右半分で検索を続けます
} else {
$right = $mid - 1; // 左半分を検索し続けます
}
}
return -1; // 目標値は存在しません
}
<p>$arr = [1, 3, 5, 7, 9, 11, 15];<br>
$target = 7;<br>
$index = binarySearch($arr, $target);<br>
if ($index != -1) {<br>
echo "目標値 $target 配列の位置はです $index";<br>
} else {<br>
echo "目標値 $target 配列には存在しません";<br>
}<br>
上記のコードは、順序付けられた配列とターゲット値をパラメーターとして受信する関数BinarySearchを定義し、配列のターゲット値の位置インデックスを返し、存在しない場合は-1を返します。
ハーフファインディング検索の時間の複雑さはO(logn)で、 nは配列の長さです。各ルックアップは範囲を半分に減らすため、パフォーマンスは線形ルックアップよりもはるかに優れており、これは大規模な順序付けられた配列の高速位置要素に適しています。
ハーフファインディングを折りたたむと検索時間が大幅に短くなります。特に、データボリュームが大きい場合は、ターゲット要素をすばやく見つけることができ、配列全体を通過する非効率性を回避できます。
頻繁な検索を必要とするアプリケーションシナリオでは、半フィニッシュ検索を使用すると、プログラムの全体的な時間のオーバーヘッドを短縮し、リソースの消費を削減し、応答速度とユーザーエクスペリエンスを向上させることができます。
この記事では、PHPハーフファインディング検索アルゴリズムの原則、実装コード、およびパフォーマンス分析を紹介します。バイナリ検索の習得は、効率的なPHPアプリケーションを開発するために特に重要であり、検索速度を効果的に改善し、プログラムのパフォーマンスを最適化できます。開発者は、このアルゴリズムを理解し、柔軟に使用することをお勧めします。