<?php
//1.递归方式实现
$num1 = 2;
$arr1 = array(1,4,12,14,19,22,27,27,29,34,36,39,55,55,65,85);
function BinarySearch($arr,$num,$start,$end){
if($start > $end)return false;
$mid = floor(($start+$end)/2);
if($num == $arr[$mid]){
return $mid;
}
else if($num <$arr[$mid]){
$start = $start;
$end = $mid - 1;
return BinarySearch($arr,$num,$start,$end);
}
else{
$start = $mid + 1;
$end = $end;
return BinarySearch($arr,$num,$start,$end);
}
}
$len = count($arr1);
$result = BinarySearch($arr1,$num1,0,$len-1);
if($result === false){
echo "没找到";
}
else{
echo "位置为:$result";
}
//2.普通方式
function binarySearch($array, $val) {
$count = count($array);
$low = 0;
$high = $count - 1;
while ($low <= $high) {
$mid = intval(($low + $high) / 2);
if ($array[$mid] == $val) {
return $mid;
}
if ($array[$mid] < $val) {
$low = $mid + 1;
} else {
$high = $mid - 1;
}
}
return false;
}