/*二分查找 是针对一个已经进行排序的数组进行查找*/
/*
$arr 要查找的数组
$v 要查找的数
$start 要查找的开始位置
$end 要查找的结束位置
*/
function binary_search($arr, $v, $start, $end){
if($start > $end){
return false;
}else{
$middle = (int)(($start + $end)/2);
if($arr[$middle] == $v){
return $middle + 1;
}else if($arr[$middle] > $v){
return binary_search($arr, $v, $start, $middle-1);
}else{
return binary_search($arr, $v, $middle+1, $end);
}
}
}
$arr = array(2, 3, 4, 6, 8, 10);
//获得数组的长度
$len = count($arr);
$result = binary_search($arr, 3, 0, $len-1);
if( $result === false){
echo "没找到啊<br />";
}else{
echo "第" . $result ."项<br />";
}
/*
$arr 要查找的数组
$v 要查找的数
$start 要查找的开始位置
$end 要查找的结束位置
*/
function binary_search($arr, $v, $start, $end){
if($start > $end){
return false;
}else{
$middle = (int)(($start + $end)/2);
if($arr[$middle] == $v){
return $middle + 1;
}else if($arr[$middle] > $v){
return binary_search($arr, $v, $start, $middle-1);
}else{
return binary_search($arr, $v, $middle+1, $end);
}
}
}
$arr = array(2, 3, 4, 6, 8, 10);
//获得数组的长度
$len = count($arr);
$result = binary_search($arr, 3, 0, $len-1);
if( $result === false){
echo "没找到啊<br />";
}else{
echo "第" . $result ."项<br />";
}