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;

}

相关推荐:

php大数组查找算法,PHP简单的数组查找算法分享相关推荐

  1. java实现约瑟夫环完整算法_Java简单实现约瑟夫环算法示例

    Java简单实现约瑟夫环算法示例 发布时间:2020-10-01 14:19:56 来源:脚本之家 阅读:104 作者:perfect亮 本文实例讲述了Java简单实现约瑟夫环算法.分享给大家供大家参 ...

  2. python计算数组元素个数_python简单获取数组元素个数的方法

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  3. 图片太大怎么改小kb?简单的图片压缩方法分享

    平时当我们在朋友圈分享一些有趣的照片或者使用图片素材进行上传的时候,经常遇到图片大小kb超出平台限制的情况,这时就无法正常上传了,遇到这种情况我们就需要想办法降低图片大小kb,那么有什么办法能够压缩图 ...

  4. 数学速算法_简单易学的速算法,贴墙上背,孩子次次数学100分!

    速算也是心算,是指利用数与数之间的特殊关系进行较快的加减乘除运算,是数学方法中的一种!对孩子而言,算数是数学最基础的东西,我们常说基础要扎实,如果能在小时候得到一定的速算能力锻炼,对将来数学能力的提升 ...

  5. java 算法_Java 浅谈数据结构和算法

    以前不管自己还是朋友在面试java工程师岗位的时候,都会被问到这样的问题: "介绍下java中的数据结构和算法". 很多朋友被问到的时候发现无从下口,甚至特别是一些初级java工程 ...

  6. 算法设计——用分治法查找数组元素的最大值和最小值、用分治法实现合并排序、最小费用问题、树的最大连通分支问题(代码实现)

    代码链接:pan.baidu.com/s/15inIth8Vl89R1CgQ_wYc2g  提取码:gf13 算法分析与设计第 1 次实验 时间 2020.3.31 地点 软件大楼 127 实验名称 ...

  7. 【算法】详解二分查找算法(思路很简单,细节是魔鬼)

    我周围的人几乎都认为二分查找很简单,但事实真的如此吗?二分查找真的很简单吗?并不简单.看看 Knuth 大佬(发明 KMP 算法的那位)怎么说的: Although the basic idea of ...

  8. java 奇偶数据排序算法,简单讲解奇偶排序算法及在Java数组中的实现

    简单讲解奇偶排序算法及在Java数组中的实现 奇偶排序是一个比较有个性的排序,基本思路是奇数列排一趟序,偶数列排一趟序,再奇数排,再偶数排,直到全部有序 举例吧, 待排数组 [6 2 4 1 5 9] ...

  9. 转载大神的~~~~~~ KMP算法的前缀next数组最通俗的解释,如果看不懂我也没辙了

    KMP算法的前缀next数组最通俗的解释,如果看不懂我也没辙了 分类: 常用基础算法 IT经典笔试题 2012-09-02 10:09  1042人阅读  评论(1)  收藏  举报 算法 c 编程 ...

最新文章

  1. 微软职位内部推荐-Sr. Dev Lead
  2. 工作场合少聊事事非非
  3. Linux内核链表深度分析【转】
  4. 模块化加载_前端模块化简单总结
  5. 云炬Android开发笔记 1项目架构设计与模块分解
  6. jarjar.jar解决jar包版本兼容问题
  7. 汉诺塔问题hdu 2065——找规律
  8. 我已经写了48年代码了,我感觉我还能写下去
  9. 怎么关超声_肋骨骨折——超声的优势
  10. AspNetCore在docker部署时遇到一个小坑
  11. 以太坊同步节点_如何同步以太坊节点而不会犯我的错误
  12. php会员可见内容代码,DedeCMS内容隐藏指定字段仅对会员显示对游客不可见的实现方法...
  13. getAttribute, getParamter区别 转帖
  14. 字体模糊的解决办法 Windows Mobile
  15. php数据表创建命令代码,MySQL创建和删除数据表的命令及语法详解
  16. eclipse配置jsp页面模板
  17. 谷歌浏览器为什么要禁用Flash插件?深夜有感而发
  18. 微信扫一扫二维码无法下载APP的解决方案
  19. linux 安装qt mysql库_Linux下QT平台Mysql数据库开发环境配置
  20. 车牌对应城市行政区编号

热门文章

  1. 在 .NET Core 中运行 JavaScript
  2. Followme Devops实践之路
  3. C#使用Xamarin开发可移植移动应用(3.Xamarin.Views控件)附源码
  4. ASP.NET Core 优雅的在开发环境保存机密(User Secrets)
  5. Docker容器环境下ASP.NET Core Web API应用程序的调试
  6. ubuntu16.4下用jexus部署asp.net core rtm
  7. JetBrains 加入 .NET 基金会
  8. 英语自动提取高频词_斑马英语提分营免费体验课
  9. 发布composer包到 Packagist,并设置自动同步(从github到Packagist)
  10. PHP项目中,记录错误日志