php专区

 首页 > php专区 > PHP应用 > 常用功能 > PHP基于二分法实现数组查找功能示例【循环与递归算法】

PHP基于二分法实现数组查找功能示例【循环与递归算法】

分享到:
【字体:
导读:
         [导读] 这篇文章主要介绍了PHP基于二分法实现数组查找功能,结合实例形式分析了while循环与递归调用算法实现二分查找功能的相关实现技巧,需要的朋友可以参考下 本文实例讲述了PHP基于二分...

这篇文章主要介绍了PHP基于二分法实现数组查找功能,结合实例形式分析了while循环与递归调用算法实现二分查找功能的相关实现技巧,需要的朋友可以参考下

本文实例讲述了PHP基于二分法实现数组查找功能。分享给大家供大家参考,具体如下:

二分法。分别使用while循环的方法和递归调用的方法。

 $high) {// 先判断结束条件
    return -1;
  }
  $i = intval(($high + $low)/2);
  if ($arr[$i] > $v){
    return bsearch_r($v, $arr, $low, $i-1);// 递归
  } else if ($arr[$i] < $v){
    return bsearch_r($v, $arr, $i+1, $high);
  } else {
    return $i;
  }
}
echo bsearch_r(1, $arr, 0, count($arr)-1);// 0
echo '
'; echo bsearch_r(14, $arr, 0, count($arr)-1);// -1 echo '
'; // while循环 function bsearch($v, $arr){   $low = 0;   $high = count($arr)-1;// 使用下标,注意减去1   // 注意凡是使用到while的时候,一定要防备无限循环的时候,注意终止循环的判断。   while($low <= $high){// 比如$low<=$high,这个等于号必须有。     $i = intval(($high + $low)/2);     if ($arr[$i] > $v){       $high = $i-1;     } else if ($arr[$i] < $v){       $low = $i+1;     } else {       return $i;     }   }   return -1;// 找不到的时候返回-1 } echo bsearch(13, $arr);// 5 echo '
'; echo bsearch(14, $arr);// -1

运行结果:


分享到:
解决Linux下php-fpm进程过多导致内存耗尽...
最近,发现个人博客的Linux服务器,数据库服务经常挂掉,导致需要重启,才能正常访问,极其恶心,于是决心开始解决问题,解放我的时间和精力(我可不想经常出问题,然后人工重启,费力费时)。 分析问题 发现问题以后,首先使用 free -m 指令查看当前服务器执行状况: 可以看到我的服务器内存是2G的,但是目前可用内存只剩...
php实现斐波那契数列代码分享
这篇文章主要介绍了php实现斐波那契数列代码分享,具有一定借鉴价值,需要的朋友可以参考下。 斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........ 这个数列从第3项开始,每一项都等于前两项之和。 F0=0,F1=1,F...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……