数组查找方法

顺序查找法:
<?php
$arr=array(25,67,76,34,28);
//定义一种在数组中查找某元素的方法
function search(&$arr,$findVal){
$flag=false;
for($i=0;$i<count($arr);$i++){
if($findVal==$arr[$i]){
echo "找到了,下标为$i";
$flag=true;
}
}
if($flag!=true){
echo "查询不到";
}
}
search($arr,76);
?>

二分查找法(该方法要求数组中元素是按照顺序排列的):
<?php
$arr=array(25,28,30,46,50);
//leftIndex数组最左边的下标,rightIndex数组最右边的下标
function search(&$arr,$findVal,$leftIndex,$rightIndex){
if($leftIndex>$rightIndex){
echo "找不到该数";
return; //return语句结束该方法
}
$middleIndex=round(($leftIndex+$rightIndex)/2); //取中间下标,round四舍五入取整数
if($findVal>$arr[$middleIndex]){
search(&$arr,$findVal,$middleIndex+1,$rightIndex);
}else if($findVal<$arr[$middleIndex]){
search(&$arr,$findVal,$leftIndex,$middleIndex-1);
}else{
echo "找到了,下标为$middleIndex";
}
}
search($arr,46,0,4);
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值