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;

}

相关推荐:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.Net Core with 微服务 - Polly 服务降级熔断

在我们实施微服务之后&#xff0c;服务间的调用变的异常频繁。多个服务之间可能是互相依赖的关系。某个服务出现故障或者是服务间的网络出现故障都会造成服务调用的失败&#xff0c;进而影响到某个业务服务处理失败。某一个服务调用失败轻则造成当前相关业务无法处理&#xff1…

IfElseActivity

IfElseActivity 1.IfElseActivity有两个IfElseBranch子控件&#xff0c;分别作为IfElse的两个分支容器,系统自动添加&#xff0c; 2.其中左边(为真件条)的IfElseBranch容器要设Condition 3.IfElse左边(为真件条)的IfElseBranch容器的Condition有两个条件模式:Code Condition,De…

vim cheat-sheet

Vim 命令小抄original card by Laurent Gregoires redesign by brohan基本移动 插入模式 撤消&#xff0c;重做 h l j k左/右 移动一个字符&#xff1b;上/下 移动一行 ^Vc ^Vn插入字符 c 的本义/十进制值 n u U撤销最近的改动 / 恢复最近被改动的行b w向 左/右 移动一个单词…

递归与非递归法实现链表相加 CC150 V5 2.5题 java版

前言&#xff1a;这是一道很有意思的题目&#xff0c;原题如下&#xff1a;You have two numbers represented by a linked list, where each node contains a single digit. The digits are stored in reverse order, such that the 1’s digit is at the head of the list. W…

荷兰人发明的新客机是劈叉的!乘客坐在机翼上

全世界只有3.14 % 的人关注了青少年数学之旅与汽车外型的复杂多变相比&#xff0c;飞机的外型似乎总是那么朴实无华&#xff0c;不管是客机还是战斗机&#xff0c;大约都是大家习以为常的那个样子……但是&#xff0c;终于有人要推陈出新了&#xff01;荷兰皇家航空公司与代尔夫…

预约 .NET Conf: Focus on F# 活动,赢得官方周边!

James: 最近 .NET 基金会预告了将在本月29日底举行的 .NET Conf: Focus on F# 线上活动&#xff0c;预约这次活动还能有机会赢得官方大礼包。.NET Conf: Focus on F# 是一个免费的、为期一天的直播活动&#xff0c;会上有来自社区和使用f#语言的微软团队的演讲者。学习 F# 如何…

【转】测试人员的思想理念和工作方法

测试人员的思想理念和工作方法 软件测试的前提假设 测试人员进行软件测试的基本假设是“有罪推断” &#xff0c;即认为被测程序一定是有bug的&#xff0c;而且每个功能点的实现都存在bug&#xff0c;而且一定存在严重的bug。 请牢记这个假设 &#xff0c;一旦在日后的工作过程…

.NET Day in China(上海-今日活动)| 线上线下

点击蓝字关注我们活动简介.NET 6 Preview 6 在 7月14日已经发布&#xff0c;.NET 6 是微软开启全平台统一一个 .NET 计划以来的第一个 LTS 版本&#xff0c;意义重大&#xff0c;微软在 .NET 6 引入了 MAUI&#xff0c;跨平台开发将更为简单&#xff0c;ASP.NET Core 也在不断的…

公司重金求数据分析师:为什么90%的公司都需要它?

全世界只有3.14 % 的人关注了青少年数学之旅混迹互联网的同学们&#xff0c;或多或少都对“数据分析师”这一职业有所耳闻。即使你不认识任何数据分析师&#xff0c;也一定看到过这类研究报告或者文章&#xff1a;Smart is the new sexy. 酷炫的图表&#xff0c;理性的分析阐述…

php定位和天气,基于thinkphp实现依据用户ip判断地理位置并提供对应天气信息的应用...

基于thinkphp实现根据用户ip判断地理位置并提供对应天气信息的应用我们都知道&#xff0c;在很多的网站都提供了给用户提供天气预报的功能&#xff0c;有时会发现&#xff0c;用户即使不输入任何和自己有关的地理位置信息&#xff0c;同样的网站也可以去判断地理位置并且显示天…

php配置问题汇总

前两天开始跟进PHP&#xff1b;我觉得&#xff0c;PHP的环境配置远比其他语言的要复杂很多。我所说的“其他语言”&#xff0c;包括Java&#xff0c;Oracle&#xff0c;scala&#xff0c;Python等。到现在PHP的环境被搭好&#xff0c;因为是全手动的配置&#xff0c;我完完整整…

Orchard Core 1.0.0 正式发布!

James: Orchard 最早是微软的员工创造的开源项目&#xff0c;使用的技术架构可以说是非常优秀&#xff0c;源码值得学习。功能也非常强大&#xff0c;支持模块化、多租户、工作流等等功能&#xff0c;可以说是 .NET 世界的 WordPress。一开始是.NET Framework 的&#xff0c;在…

[方法“Boolean Contains(System.Guid)”不支持转换为 SQL]的解决办法

Guid ClsID newGuid("d4ee9c52-8d68-4f33-9485-0926281c78ac");IList<Guid>Ids WebProduct.GetAllChildByID(ClsID);var query db.T_Products.Where(p >Ids.Contains((Guid)p.F_ClsID));//这一句编译时无错&#xff0c;但是一执行&#xff0c;就报错出错信息…

解决IE为7939.com的病毒~

病毒名称&#xff1a;“诡秘下载器”变种CXW&#xff08;Trojan.DL.Delf.cxw&#xff09;病毒类型&#xff1a;流氓软件病毒危害级别&#xff1a;★★★☆该病毒运行后会从***指定的网站下载指令并运行&#xff0c;会将用户IE浏览器的主页锁定为一个名叫“7939上网导航”的网站…

这哥们到底是应聘的还是来收购公司的?| 今日趣图

全世界只有3.14 % 的人关注了青少年数学之旅图源网络&#xff0c;侵权删

java web 测试类,构建一个容易单元测试的java–web系统-JSP教程,Java技巧及代码

最近在做一个项目,我们使用的是一些看似很标准的web结构,dao(数据访问)helper(处理业务操作)action(调用helper层)struts的控制系统,页面使用struts标签和部分自定义标签完成显示.进入测试阶段后1,dao测试–junit的确非常不错,我们使用eclipsejunit.jar,很满意的完成了这部分检…

Abp太重了?轻量化Abp框架

本文首发于个人博客&#xff08;https://blog.zhangchi.fun/&#xff09;在进行框架的选型时&#xff0c;经常会听到“***框架太重了”之类的声音&#xff0c;比如“Abp太重了&#xff0c;不适合我们...”。事实上&#xff0c;Abp框架真的很重吗&#xff1f;框架的“轻”和“重…

js跳转页面方法

<span id"tiao">3</span><a href"javascript:countDown"></a>布丁足迹;秒后自动跳转……<meta http-equivrefresh content3;url/search/billsearch.jsp</ul><!--脚本开始--> <script language"javascript&…

使用Treeview模拟操作系统的文件系统

default.aspx 代码&#xff1a;<% Page language"c#" Codebehind"default.aspx.cs" AutoEventWireup"false" Inherits"OsFilesytem._default" %><% Register TagPrefix"iewc" Namespace"Microsoft.Web.UI.Web…

matlab怎么绘制曲线,如何在Matlab中绘制曲线

您需要定义要绘制的中间点.然后您可以手动定义它们,也可以查看样条插值.使用样条插值时,只需要一个中间点即可确定完整曲线.在MATLAB中,你可以找到类似这样的演示spline2d.以下是它的要点&#xff1a;% end pointsX [0 1];Y [0 0];% intermediate point (you have to choose …