binarySearch.php
<?php
class Algorithm
{
static function binarySearch( $arr, $num )
{
$trials = 1; // 試行回数
$low = 0; // 最小範囲
$high = count( $arr ) - 1; // 最大範囲
while( $low <= $high )
{
$pivot = ($low + $high) / 2;
$pivot = (int)$pivot;
if($arr[$pivot] == $num)
{
return array( $num, $trials );
}
if($num > $arr{$pivot})
{
$low = $pivot + 1;
}
if($num < $arr{$pivot})
{
$high = $pivot -1;
}
++$trials;
}
return null;
}
}
// ------------------------------------------------------------
$arr = array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 );
$num = 8;
// ------------------------------------------------------------
$anser = Algorithm::binarySearch( $arr, $num );
var_dump($anser);
echo "<hr/>";
echo "ナンバー:{$anser[0]} <br/>";
echo "試行回数:{$anser{1}} <br/>";
表示結果
array(2) { [0]=> int(8) [1]=> int(4) }
ナンバー:8
試行回数:4



