PHPで二分探索アルゴリズムを適用する方法を教えてください
PHPの2分探索アルゴリズムは、整列された配列の中の特定の要素を素早く見つける必要がある状況に応用できます。
function binarySearch($arr, $target) {
$left = 0;
$right = count($arr) - 1;
while ($left <= $right) {
$mid = floor(($left + $right) / 2);
if ($arr[$mid] == $target) {
return $mid;
}
if ($arr[$mid] < $target) {
$left = $mid + 1;
} else {
$right = $mid - 1;
}
}
return -1; // 如果目标元素不存在于数组中,则返回-1
}
$sortedArray = [2, 5, 8, 12, 16, 23, 38, 56, 72, 91];
$targetElement = 16;
$result = binarySearch($sortedArray, $targetElement);
if ($result == -1) {
echo "目标元素不存在于数组中";
} else {
echo "目标元素的索引为 " . $result;
}
この例では、binarySearchという名前の関数を定義します。この関数は順序付けされた配列と目標要素を引数として受け取ります。この関数はwhileループを使用して配列の中央の要素と目標要素の大きさを繰り返し比較し、比較結果に基づいて探索範囲を狭めていき、目標要素が見つかるか探索範囲が空になるまで続けます。
目標要素が見つかれば、その配列内の目標要素のインデックスを返します。目標要素が配列内に存在しない場合は、-1を返します。
上のサンプルでは、ソート済みの配列$sortedArrayと探索対象の要素$targetElementを用いて、2 分探索アルゴリズムをテストしました。このサンプルでは、探索対象の要素16 が配列中に存在するため、出力は「探索対象の要素のインデックスは 4 です」となります。探索対象の要素が配列中に存在しない場合は、出力は「探索対象の要素は配列中に存在しません」となります。