//php二分法查找(也叫折半查找)算法/ 数组必须是从小到大的

$abs=array(1,12,13,114,115,116,117,118);

//z查找数组的最大下标

$hight = count($abs) - 1 ;

$low =0;

$num = 6;

//var_dump($abs);

//基本思想

// 1首先找到根据下标找到中间这个数字

// 2如果要找的数字大于中间这个数字,则继续向后进行二分查询, 折半查询

// 3如果要找的数字小于中间的数,则继续向前进行二分法查询,折半查询 找到时 希望能同时找到元素下标

//如果起始下标大于终止下标,说明未找到

function dichotomy($abs,$low,$hight,$num) {

if($low > $hight){

return false;

}

//取出中间元素下标,现在是向下去

$center = floor(($low + $hight)/2);

if($abs[$center] > $num ){

//要查询的数小于中间的数,向前查,那么这时候最大下标为 ,中间这个数的下标-1

$hight = $center-1;

//再进行递归调用

return dichotomy($abs,$low,$hight,$num);

}

else if($abs[$center] < $num){

//要查询的数字大于中间的数字,向后查,那么这时候最大下标为,$hight 最小下标为 $center +1

$low = $center + 1 ;

return dichotomy($abs,$low,$hight,$num);

}else{

//找到这个数, 返回下标

return $center;

}

}

$date= dichotomy($abs,0,$hight,115);

var_dump($date);

?>

php折半查找算法,php二分法查找(也叫折半查找)算法 (数组必须是从小到大的)相关推荐

  1. 【基础算法】二分法(二分答案,二分查找),三分法,Dinkelbach算法,算法详解+例题剖析

    目录 一 . 二分法 二分搜索得要求: 二分查找步骤: 二分答案: 玄学的二分(二分答案) 二 . 三分法 例题 三.01分数规划问题相关算法与题目讲解(二分法与Dinkelbach算法) 一 . 二 ...

  2. 数据结构与算法笔记(十二)—— 查找算法(顺序查找、二分法查找)

    搜索是在一个项目集合中找到一个特定项目的算法过程.搜索通常的答案是真的或假的,因为该项目是否存在.搜索的几种常见方法:顺序查找.二分法查找.二叉树查找.哈希查找 一.顺序查找 最基本的查找技术,过程: ...

  3. mysql实现二分法查找_算法之二分法查找

    二分法检索(binary search)又称折半检索,二分法检索的基本思想是设字典中的元素从小到大有序地存放在数组(array)中, 首先将给定值key与字典中间位置上元素的关键码(key)比较,如果 ...

  4. 折半查找的思想及源码_结构与算法(04):排序规则与查找算法

    一.递归算法 递归就是方法自己调用自己,每次调用时传入不同的变量,可以让代码变得简洁.递归算法在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法,递归式方法可以被用于解决很多的计算 ...

  5. while循环random结合_Java 经典算法:二分法查找(循环和递归两种方式实现)

    一.二分法查找简介 当数组或者集合中存放的元素数量非常多的时候,想要跟踪具体某个元素的位置或者是否存在,常规方式是循环每一个元素直到找到要查找的元素为止.这样的查找方式效率非常低下,这个时候需要使用二 ...

  6. xtragrid 某个值 查找_Java 经典算法:二分法查找(循环和递归两种方式实现)

    一.二分法查找简介 当数组或者集合中存放的元素数量非常多的时候,想要跟踪具体某个元素的位置或者是否存在,常规方式是循环每一个元素直到找到要查找的元素为止.这样的查找方式效率非常低下,这个时候需要使用二 ...

  7. 【数据结构和算法笔记】线性表的查找(平均查找长度,二分法,判定树)

    查找: 给定一个值k,在含有n个元素的表中找出关键字等于k的元素,若找到,则查找成功,否则,查找失败 查找前首先确定(1)存放数据的数据结构是什么(2)元素是否有序 动态查找表:查找的同时做修改操作( ...

  8. 数据结构与算法(8-2)有序表查找(折半查找(二分查找)、插值查找)

    目录 一.折半查找(二分查找) 二.插值查找 总代码 一.折半查找(二分查找) 原理:一次次折半,不断向着查找值的位置靠近 . 适用场景:有序(必须) 流程:开始时,min标志首,max标志尾,med ...

  9. 折半查找法(二分法)流程图

    折半查找法漂亮的流程图 1.n维有序数组通过折半查找法查找数m,若查到则输出查找数字index,若没查到,则输出"not be found".

最新文章

  1. 不等待输入_「对方正在输入……」的提示,给聊天带来什么影响?
  2. 开发经验分享_06_前端开发技巧
  3. Groovy的基础语法
  4. 前端开发 背景图 0229
  5. Python之访问set
  6. vue引入外部文件_vue3+typescript引入外部文件
  7. java笔记:第6章 面向对象程序设计
  8. 怎么用C语言求解线性规划,线性规划习题详细解析,包括线性规划方程求解步骤...
  9. mac 生成公私钥key
  10. 系统异常日志处理的思考
  11. 第三方支付的发展趋势及优势
  12. 专利解析|多维建模结合AI识别商品特征的方法
  13. 简单又详细的网页爬虫案例
  14. Unity3D+WebGL数据交互、传参
  15. 从CRUD到自身架构师的蜕变之路?全靠这份:Java中高级核心知识全面解析
  16. Fan996餐饮外卖平台小程序 V1.0.1正式版
  17. 短信分割算法(以长度分割)
  18. 计算机教室网络连接简图,多媒体教室连接示意图.ppt
  19. 如何理解方差分析和F分布?
  20. Orecal数据库的基本使用

热门文章

  1. c 串转string_string::c_str()、string::c_data()及string与char *的正确转换
  2. 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第15章-基于竞争关系的离散异构多智能体系统分组一致性
  3. python 等比例缩放图片 自写
  4. 类和对象—对象特性—静态成员函数
  5. python错误提示“TabError: inconsistent use of tabs and spaces in indentation”
  6. 连接器篇(一) 低频系列
  7. 360 开源企业级 Kubernetes 多集群管理平台 Wayne
  8. 【转】C++ const用法 尽可能使用const
  9. sublime3配置pythonIDE
  10. Python数据分析学习笔记之Pandas入门