PHP二分查找
2015-09-09 17:54
585 查看
二分查找需要数组有序,效率为O(logn)
输出
递归方法
<?php #二分查找 function binarySearch(Array $arr, $target) { $low = 0; $high = count($arr) - 1; while($low <= $high) { $mid = floor(($low + $high) / 2); #找到元素 if($arr[$mid] == $target) return $mid; #中元素比目标大,查找左部 if($arr[$mid] > $target) $high = $mid - 1; #重元素比目标小,查找右部 if($arr[$mid] < $target) $low = $mid + 1; } #查找失败 return false; } $arr = array(1, 3, 5, 7, 9, 11); $inx = binarySearch($arr, 1); var_dump($inx); ?>
输出
float(0)
递归方法
function binarySearch(Array $arr, $target) { $mid = ceil(count($arr) / 2); //取中间位的下标 if ($arr[$mid] < $target) { $arr = array_slice($arr,$mid); return binarySearch($arr, $target); } else if ($arr[$mid] > $target){ $arr = array_slice($arr,0,$mid); return binarySearch($arr, $target); } else if{ return $mid; } else { return false; } }
相关文章推荐
- PHP中file_exists与is_file,is_dir的区别
- php断点调试的几种方法
- YII路径的用法总结
- 3. PHP 细节
- PHP&正则表达式
- php引用计数与变量引用
- rtp 报头的大小端 可查看jrtplib 中的定义
- php代码优化
- php断点调试--安装xdebug
- 【ThinkPHP】修改ThinkPHP3.1.x成功与失败的跳转页面
- php导出excel
- PHP输入流php://input
- PHP相等的问题
- php的mysql_connect连接遇到的2006问题
- FlowLayoutPanel控件
- 烂泥:Server-U FTP与AD完美集成方案详解
- PHP 5.3以上版本推荐使用mysqlnd驱动
- 在dos命令窗口远程修改自己的FTP密码
- PHPCMS v9 将消息提醒改为类似公告顶端上面提示。
- php-leveldb 扩展安装 和使用