在程序开发中,经常需要在数组中查找特定的元素,例如,在一个数组中查找是否包含一个数组8.在数组中常用的查找的方法有顺序查找法和二分查找法。
1.顺序查找法
顺序查找法就是按照数组中的元素排列序号,从前往后一个一个查,如果找到怎返回当前元素所在下标
通过定义一个函数serch()函数来顺序查找数组是否含有数组8.
案例
<?php
$arr=array(1,6,5,3,9,8,7);
function search(&$arr,$find){
for($i=1; $i<count($arr); $i++){
if($find==$arr[$i]){
echo "找到了,下标为".$i;
$flag=true;
}
}
if(!$flag){
echo "查无此数";
}
}
echo search($arr,10);
?>
运行结果
2.二分查找法
二分查找法就是每次将指定元素和数组中间的元素进行比较,从而排除掉其中一半的元素,依次类推,继续进行查找,这样的查找方式是非常高效的,需要注意的是二分查找法只能由于排序后的数组。
案例
<?php
function binarySearch(&$arr,$find,$start,$end){
if($start>$end){ //当开始下标大于结束下标时,说明找不到这个数
echo "找不到该数";
return false;
}
$mid=round(($start+$end)/2); //获得中间元素的下标
if($find>$arr[$mid]){ //如果查找数值大于中间数组,则下向右查找
binarySearch($arr,$find,$mid+1,$end);
}else if($find<$arr[$mid]){ //如果查找数值小宇中间数组,则下向左查找
binarySearch($arr,$find,$start,$mid-1);
}
else{
echo "找到这个数,下标为".$mid;
}
}
$arr=array(2,6,7,9,10);
echo binarySearch($arr,7,0,count($arr)-1);
?>
运行结果
*声明:内容来源于网络收集和整理,版权归原著所有,如来源信息有误或侵犯权益,请联系站长作修改和删除处理。