二分查找
2018年6月29日
评论已被关闭
二分查找也叫折半查找
[pcsh lang=”php” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]
$a = [0,1,2,3,4,5,6];
function half($arr, $value){
$low = 0;
$high = count($arr)-1; //9
if($value>$arr[$high] || $value<$arr[$low])
return false;
while($low <= $high){
$mid = floor(($low+$high)/2); //4
if($value > $arr[$mid]){
$low = $mid + 1;
}
elseif($value < $arr[$mid]){
$high = $mid - 1;
}
else{
return $mid;
}
}
return -1;
}
$x = half($a, 2);
var_dump($x);
[/pcsh]