php二分查找的两种实现方法
2017-03-02 18:01
609 查看
递归函数实现:
循环实现:
水平有限,敬请指正!
function binarySearch($arr, $val, $st, $et){ $m_ind = $st + floor(($et-$st)/2); $max_idx = count($arr)-1; $min_idx = 0; if($arr[$min_idx]>$val || $arr[$max_idx]<$val || ($et-$st==1 && $arr[$et]!=$val && $arr[$st]!=$val)){ return -1; } if($arr[$m_ind]==$val){ return $m_ind; } else if($arr[$m_ind] > $val){ $et = $m_ind - 1; return binarySearch($arr, $val, $st, $et); } else { $st = $m_ind + 1; return binarySearch($arr, $val, $st, $et); } }
循环实现:
function binarySearch($arr, $val){ $st = 0; $et = count($arr) - 1; $m_ind = floor(($et-$st)/2); do{ if($arr[$m_ind]==$val){ return $m_ind; } else if($arr[$m_ind] > $val){ $et = $m_ind - 1; $off = ceil(($m_ind-$st)/2); if($off == 0) return -1; $m_ind = $m_ind - $off; } else { $st = $m_ind + 1; $off = ceil(($et-$m_ind)/2); if($off == 0) return -1; $m_ind = $m_ind + $off; } }while(true); }
水平有限,敬请指正!
相关文章推荐
- PHP中实现二分法查找的两种方法
- C语言经典算法(九)——递归实现二分查找的两种方法
- 使用递归和非递归两种方法实现二分查找!!!
- 二分查找的两种实现方法
- 二分查找的两种实现方法
- PHP中实现二分法查找的两种方法
- PHP中实现二分法查找的两种方法
- 用PHP程序实现支持页面后退的两种方法
- php 301重定向实现的两种方法
- smarty实现PHP静态化的两种方法分享
- 转:实例学习PHP程序对用户身份认证实现两种方法
- 一个可能存在Bug的二分查找方法的实现,大家一起看看有什么问题没
- 两种方法实现类似微博好友查找的道指令程序
- PHP程序实现支持页面后退的两种方法
- php实现伪静态化页面的两种方法
- 转:实例学习PHP程序对用户身份认证实现两种方法
- PHP 文件上传进度条的两种实现方法
- 用PHP程序实现支持页面后退的两种方法
- php自动加载的两种实现方法
- 用PHP程序实现支持页面后退的两种方法