php大数组查找算法,PHP简单的数组查找算法分享

PHP中对于数组的查找可以用顺序查找或二分法查找。其中顺序查找比较简单,就是逐个比较查找。但缺点也较明显,如果查找的元素恰巧在最后一个,循环的次数过多。

1.顺序查找算法描述

在数组中逐个查找,确认是否有某个元素,存在时返回元素的位置信息。可以设置标志信息,初始值为false.找到直接输出位置,并将标志设置为true。循环结束标志仍为false,则没有找到。

代码体现:$arr =[123,19,38,29,10,34];

function search($arr,$target){

// 参数:目标数组 目标元素

foreach ($arr as $key => $value) {

if($value == $target){

return $key.'
';

}

}

return false;

}

2.二分法查找算法描述

假设数组严格升序。如果目标元素大于中间的值,查找范围向右侧缩小一半。如果目标元素的值小于中间元素的值,查找范围向左侧缩小一半。

代码体现:function half_search($arr,$target){

// 定义出初始的第一个,最后一个元素的下标范围

$len = count($arr);

$left =0;

$right =$len -1;

// 循环查找

// 范围不断的移动 ,必须满足一个条件

// 最左侧元素的下标 小于等于右侧元素的下标

while($left <= $right){

// 中间元素的下标

$middle = floor(($left + $right) /2);

// 目标元素与中间元素进行比较

if($target == $arr[$middle]){

return $middle;

}

// 如果目标元素小于中间元素

// 范围向左缩小一半

if($target < $arr[$middle]){

$right =$middle-1 ;

}

// 如果目标元素大于中间元素

// 范围向右缩小一半

if($target > $arr[$middle]){

$left = $middle + 1;

}

}

// 循环终止了

// 没有找到

return false;

}

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值