<?php
$input = 3;
$in = array(1,2,3,4,5,6,7,8,9);
function dichotomy($input,array &$seach)
{
$i =0;
$start = 0;
$end = count($end) -1;
$maxCounts = ceil(log($end,2));
while (true)
{
$i++;
$x = floor(($start + $end)/2);
if (!changeRange($start, $end,$seach,$x,$input))
{
break;
}
if($i > $maxCounts)
{
return false;
}
}
echo $x;
return $x;
}
function changeRange(&$start,&$end, &$seach,$rt,$input)
{
if($seach[$rt] == $input)
{
return false;
}elseif ($seach[$rt] > $input)
{
$end = $rt+1;
}else
{
$start = $rt -1;
}
return true;
}
dichotomy($input,$in);
?>
自己实现的二分法,好玩而已,没有跑过