PHP实现常见算法之二分查找法
来源:互联网 发布:电脑同时安装软件 编辑:程序博客网 时间:2024/06/04 20:04
/** * * @Name 二分法 - 指定key的所在位置 * * @Rm 二分法使用场景: 查找数组必须为:有序数字索引数组(从小到大) * * @Thinking * 在二分搜寻法中,从数列的中间开始搜寻,如果这个数小于我们所搜寻的数,由于数列已排序, * 则该数左边的数一定都小于要搜寻的对象,所以无需浪费时间在左边的数;如果搜寻的数大于所搜寻 * 的对象,则右边的数无需再搜寻,直接搜寻左边的数。 * * @param int $obj_len * @param array $Arr * @param int $find * * * @return float|int * */function DichotomySearch(int $obj_len,array $Arr,int $find){ $start = 0; $end = $obj_len-1; $num = 1; while ($start <= $end){ $avg = intval(($start + $end) / 2); if($Arr[$avg] < $find){ $start = $avg + 1; }else if($Arr[$avg] > $find){ $end = $avg - 1; }else{ echo "本次查询循环次数为: ".$num.PHP_EOL; return $avg; } $num++; } return -1;}//创建数组$arr_list = [10,11,14,16,18,19,21,29,30,36,38,42,43,47,49,50,53,54,57,80,84,94,96,102,105,107,120,125,129,138,139,140,150,188,190,200];sort($arr_list);$index = DichotomySearch(count($arr_list),$arr_list,80);echo "查 询 到的数据值为:".$arr_list[$index].PHP_EOL;echo "找到对应位置索引为:".$index.PHP_EOL; 查找结果( 即运行结果 )如下: 本次查询循环次数为: 4 查 询 到的数据值为:80 找到对应位置索引为:19 ( 注:本文参考C语言算法书籍《经典算法大全》)
阅读全文
0 0
- PHP实现常见算法之二分查找法
- 常见算法之二分查找
- 常见查找算法之—二分查找
- Java实现算法之--二分查找法
- 算法之二分查找(php版实现+测试)
- 图解算法练习--二分查找法(PHP实现)
- PHP的二分查找算法实现
- PHP实现折半(二分)查找算法
- PHP实现折半(二分)查找算法
- 算法之二分查找法
- 算法之二分查找法
- 算法之二分查找法
- php 二分算法查找
- 二分查找算法 php
- php二分查找算法
- 二分查找算法 php
- python实现查找算法:二分查找法
- 二分查找算法之python实现
- Eclipse构建Maven项目
- 字符串排序
- Java基础第一课dos命令学习
- oracle数据库的启动与关闭
- httpClient入门到精通-------配置参数
- PHP实现常见算法之二分查找法
- jQuery会过时吗?
- 设计模式-观察者模式
- 扫描全国的ip并识别摄像头
- Flag
- javascript之checkbox全选反选功能实现
- RocketMQ原理(1)——服务端组件介绍
- 学习记录9
- shiro框架---认证