1.顺序查找: 对某个数组,按照顺序,一个一个比较,然后找到你要的数据.
案例:
要求从一个数组 $arr=array(46,90,900,0,-1)中查找一个 数 34,如果查找则输出该数的下标,如果找不到,则输出,查无此数
/**
*要求从一个数组 $arr=array(46,90,900,0,-1)中查找一个 数 34,如果查找则输出该数//的下标,如果找不
*到,则输出,查无此数
*/
$arr=array(46,90,900,0,-1,-1);
function search(&$arr,$findVal){
$flag=false;
for($i=0;$i<count($arr);$i++){
if($findVal==$arr[$i]){
echo "找到了,下标为=$i";
$flag=true;
//break;
}
}
if(!$flag){
echo '查询不到';
}
}
search($arr,-1);
2.二分查找法: 它有一个重要的前提, 该数组本身已经是一个有序数组.如果该数组不是有序的,则必须先排序再查找
//二分查找函数
function binarySearch(&$arr,$findVal,$leftIndex,$rightIndex){
//当 $rightIndex<$leftIndex 说明没有数
//为什么
if($rightIndex<$leftIndex){
echo "找不到该数";
return ;
}
//找到中间这个数
$middleIndex=round(($rightIndex+$leftIndex)/2);//函数round:四舍五入
//如果大于则,向后面找
if($findVal>$arr[$middleIndex]){
binarySearch($arr,$findVal,$middleIndex+1,$rightIndex);
}
//如果是小于中间这个数,则向前面找
else if($findVal<$arr[$middleIndex]){
binarySearch($arr,$findVal,$leftIndex,$middleIndex-1);
}else{
echo "找到这个数 下标是 $middleIndex";
}
}