数组中查找
1、顺序查找:
function serach(&$arr,$value1){
$flag=FALSE;
for ($i=0; $i < count($arr) ; $i++) {
if($arr[$i]==$value1){
echo "找到该数,下标为:".$i;
$flag=true;
break;
}
}
if(!$flag){
echo "查无此数";
}
}
2、二分查找:数组必须是有序的
function binarySearch(&$arr,$findVal,$leftIndex,$rightIndex){
//如果递归过程中出现$leftIndex>$rightIndex,说明查不到该数
if($leftIndex>$rightIndex){
echo "查无此数";
return;
}
$middleIndex=round(($leftIndex+$rightIndex)/2);
//如果要查找的数比中间那个数小,则向前查找
if($findVal<$arr[$middleIndex]){
binarySearch($arr,$findVal,$leftIndex,$middleIndex-1);
//如果要查找的数比中间那个数大,则向后查找
}elseif($findVal>$arr[$middleIndex]){
binarySearch($arr,$findVal,$middleIndex+1,$rightIndex);
}else{
echo "要查找的数下标就是".$middleIndex;
}
}

浙公网安备 33010602011771号