查找
查找:
顺序,对一个数组按顺序查,一个一个比较,然后找到
你要的数据
//查找
$arr=array(23,24,52,66,2);
function search(&$arr,$findval){
$flag=false; //定义一个布尔值$flag作为
标志符;
for($i=0;$i<count($arr);$i++){ //遍历 用
foreach也行;
if($findval==$arr[$i]){
echo "找到了,下标是:".$i;
$flag=true;
break; //找到一个就退出了
}
}
if(!$flag){
echo "查无此数";
}
}
二分查找;
前提是该数组已经是有序的数组;无序的就必须先排序
方式:找到数组中间的数,然后与要查的数比较;(数组是从小到大排列的)
大于中间的数->向右查,小于->向左查;
//二分查找函数
function binarysearch(&$arr,$findval,$left,$right){ //二分查找 用到递归的思想
if($left>$right){
echo "没找到数";
return;
}
$middle=round(($right+$left)/2);//找到中间的数;四舍五入
if($findval>$arr[$middle]){ //你要查找的数与中间数比较
binarysearch($arr,$findval,$middle+1,$right);
}
else if($findval<$arr[$middle]){
binarysearch($arr,$findval,$left,$middle-1);
}else{
echo "找到这个数 下标是".$middle;
}
}
// search($arr,230);
$arr=array(23,42,54,66,333); //必须是有序的数组
binarysearch($arr,54,0,count($arr)-1);
、、、多维数组
数组中的元素也是数组;
$arr=array(array(1,2,3),array(4,5,6,3));
浙公网安备 33010602011771号