二分查找算法
2018-06-22 05:36:50来源:未知 阅读 ()
二分查找算法的前提:
1,针对的是索引数组;
2,针对的是已经排好的数组。
代码演示:
//函数功能:从数组$arr中的位置$begin开始到位置$end之间找数据$s function binary_search($arr,$s,$begin,$end) { $mid = floor(($begin+$end)/2); // 定位中间的位置 $mid_value = $arr[$mid];//取得中间项的值 if($mid_value == $s) { return true; }else if($mid_value >$s) { if($begin > $mid-1)//如果开始位置都比结束位置大了,表示肯定找不到了 { return false; } //中间项比要找的$s大,就去左边找吧: $re = binary_search($arr,$s,$begin,$mid-1); }else { if($mid+1 > $end)//如果开始位置比结束位置大了,表示肯定找不到了 { return false; } //中间项比要找的$s小,就去右边找吧; $re = binary_search($arr,$s,$mid+1,$end); } return $re; }
测试代码:
<?php $a = array(1,3,11,18,19,22,25,33,34,38,44,55,56,58); $search = 35;//要找的数 $len = count($a); // 数量,自然,最大下标是len-1 //使用binary_search()函数从$a中到len-1位置找$search $v1 = binary_search($a,$search,0,$len-1); echo "结果为:"; var_dump($v1);
测试结果:
· 结果为:bool(false)
有关二分法查找算法的效率(性能)问题的一点说明:
1000个数据,约10次找出;
100完个数据,约20次找出;
10亿个数据,约30次找出;
40亿个数据,约32次找出。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- PHP实现的MD5结合RSA签名算法实例 2020-03-22
- 利用PHP实现开心消消乐的算法示例 2020-03-22
- PHP实现的贪婪算法实例 2020-02-20
- PHP实现的折半查询算法示例 2020-02-17
- php 算法之实现相对路径的实例 2020-02-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash