ITPub博客

首页 > IT职业 > IT图书 > php二分法查找(也叫折半查找)算法 (数组必须是从小到大的)

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

IT图书 作者:liangyh 时间:2021-09-09 09:06:17 0 删除 编辑

//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] 

}

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

?>

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2260/viewspace-2799462/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-16

  • 博文量
    86
  • 访问量
    836