1.顺序查找
function search($arr,$searchVal){
$flag=false;
for($i=0;$i<count($arr);$i++){
if($searchVal==$arr[$i]){
echo '找到了,下标是'.$i;
$flag=true;
break;
}
}
if(!$flag){
echo '查无此数';
}
}
2.二分查找
//特别注意:二分查找只对有序数组有效
function search($arr,$searchVal,$leftIndex,$rightIndex){
if($leftIndex>$rightIndex){
echo "查无此数";
//退出
return;
}
//中间附近的一个元素
$minIndex=round($leftIndex+$rightIndex)/2;
//如果要查找的数大于中间的数,就要向后找
if($searchVal>$arr[$minIndex]){
search($arr,$searchVal,$minIndex+1,$rightIndex);
}elseif($searchVal<$arr[$minIndex]){
search($arr,$searchVal,$leftIndex,$minIndex-1);
}else{
echo '找到了,下标是:'.$minIndex;
}
}
$a=[1,5,8,33,76,99,123];
$rIndex=count($a)-1;
search($a,-1,0,$rIndex);