二分查找法需要数组是一个有序的数组。

<?php
function binarySearch($num, $arr) {
$start = 0;
$end = count($arr);
$mid = floor(($start+$end)/2); while ($start<$end-1) {
if ($num == $arr[$mid]) {
return $mid;
} elseif ($num < $arr[$mid]) {
$end = $mid;
$mid = floor(($start+$end)/2);
} else {
$start = $mid;
$mid = floor(($start+$end)/2);
}
}
return false;
}
$arr = [1,2,3,4,5,6,7,8,9,10];
$result = binarySearch(7,$arr);
print_r($result);

PHP实现二分法查找的更多相关文章

  1. 使用二分法查找mobile文件中区号归属地

    #!/usr/bin/env python #coding:utf-8 ''' Created on 2015年12月8日 @author: DL @Description: 使用二分法查找mobil ...

  2. js冒泡排序与二分法查找

    冒泡排序 var attr=[1,5,7,6,3,9,2,8,4]; var zj=0; //控制比较轮数 for(var i=0;i<attr.length-1;i++) { //控制每轮的比 ...

  3. Java基础(50):二分法查找的非递归实现和递归实现(完整代码可运行,参考VisualGO理解更佳)

    一.概念 二分查找算法也称折半查找,是一种在有序数组中查找某一特定元素的搜索算法. 二.算法思想 搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束:如果某一特定元素大于或者 ...

  4. C语言的算法--------二分法查找

    int find(int n,int a[],int l){int low=0;int high=l-1;int middle=0;while(low<high){middle=(low+hig ...

  5. JavaScript用二分法查找数据等

    //二分法查数据 var arr=[41,43,45,53,44,95,23]; var b=44; var min=0; var max=arr.length; for(var i=1;i<a ...

  6. Python二分法查找及变种分析

    基于Python3 普通二分法查找目标值的index 二分法查找的思路很简单,先确定好列表nums的一头start一尾end,中间值middle根据头尾数值之和用地板除法除以2,即(start + e ...

  7. C#实现二分法查找算法

    /// <summary> /// 二分法查找 /// </summary> /// <param name="arr"></param& ...

  8. python3 二分法查找

    '''二分法查找有序列表掐头去尾取中间查找列表中xx在不在列表中,在,则返回索引值'''# lst = [1, 4, 6, 8, 9, 21, 23, 26, 35, 48, 49, 54, 67, ...

  9. day17递归函数(二分法查找)

    递归函数: 如果函数包含了对其自身的调用,该函数就是递归的: example 1:二分法查找的实现: def find_recursion(l,aim,start=0,end=None): #end不 ...

  10. C# -- 二分法查找

    二分法查找:适用于已经排序好的数组 1.二分法查找(入门案例) static void Main(string[] args) { , , , , , , , , , , , , , , , , , ...

随机推荐

  1. angularjs等号运算

    在angularjs的程序里,等号运算符有下面几种运算:

  2. 微服务中Feign快速搭建

    在微服务架构搭建声明性REST客户端[feign].Feign是一个声明式的Web服务客户端.这使得Web服务客户端的写入更加方便 要使用Feign创建一个界面并对其进行注释.它具有可插入注释支持,包 ...

  3. Javascript高级编程学习笔记(63)—— 事件(7)鼠标及滚轮事件

    鼠标与滚轮事件 鼠标事件是web开发中最常用的一类事件,毕竟鼠标是最主要的定位设备 DOM3级事件中定义了9个鼠标事件: click:在用户单击主鼠标按钮(一般为鼠标左键)或者按下回车时触发,这一点对 ...

  4. 《深入浅出nodejs》读书笔记(1)

    概述 本来是想着学学node.js试试的,后来发现node.js才是真正的js啊,它里面用到了很多我们平时没用过的js特性,而且还非常优雅,比如它里面的异步编程思想,总之,<深入浅出node.j ...

  5. Metasploit Framework(2)Exploit模块、Payload使用

    文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 Exploit模块分为主动和被动(Active.Pas ...

  6. [Swift]枚举类型:UIBarButtonItem的24种样式

    UIBarButtonSystemItemFlexibleSpace 可变空白, 在调用的过程中,使用  UIBarButtonSystemItemFlexibleSpace去占位,达到实现规范化的目 ...

  7. 访问https 报错ssl 协议异常

    报错信息: ERROR][http-nio-8888-exec-1] - Servlet.service() for servlet [dispatcherServlet] in context wi ...

  8. JWT(Json web token)简介

    Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(S ...

  9. 第四课 VMP壳内爆破

    这一课用来演示的软件是文件巴士. 打开网页一搜索,可笑的是搜索到的结果都是破解版,想找个原版的倒费劲了. 好容易找到一个,下好一查壳,还没有... 行吧,自己加一个VMP壳开搞. 第一步 OD载入程序 ...

  10. IntelliJ IDEA如何设置新建类时,自动注释作者信息和日期时间

    本文提供两种注释风格供参考. 风格1:简约Style 效果如下: 设置步骤: File--> Settings--> Editor--> File and Code Template ...