PHPで二分探索アルゴリズムのコードを書く方法は何ですか?
以下は簡単なPHPでの二分探索アルゴリズムのサンプルコードです。
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;
}
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$target = 6;
$result = binarySearch($arr, $target);
if ($result == -1) {
echo "目标元素不存在";
} else {
echo "目标元素在索引 " . $result . " 处";
}
このコードは、ソートされた配列内で目標要素のインデックスを見つけるための二分探索アルゴリズムを実装しています。最初に、binarySearch関数を定義し、ソートされた配列と目標要素を引数として受け取ります。次に、左と右の2つのポインタを配列の先頭と末尾の位置にそれぞれ指定します。そして、ループに入り、leftがrightよりも大きくなるまで続けます。各ループで、中間要素のインデックスmidを計算し、目標要素と比較します。もし一致すれば、インデックスmidを返します。目標要素が中間要素よりも大きい場合は、leftをmid + 1に更新し、そうでない場合は、rightをmid – 1に更新します。ループが終了しても目標要素が見つからない場合は、-1を返します。最後に、binarySearch関数を呼び出してテストし、結果に応じた情報を出力します。