zoukankan      html  css  js  c++  java
  • PHP二分查找算法

    思路:递归算法。在一个已经排好序的数组中查找某一个数值,每一次都先跟数组的中间元素进行比较,若相等则返回中间元素的位置,若小于中间元素,则在数组中小于中间元素的部分查找,若大于中间元素,则在数组中大于中间元素的部分查找,若查找不到则返回-1.

    function binSearch($arr,$head,$tail,$find)

    {

             if($head > $tail) {  //开始位置大于末尾位置,表示没找到

                       return -1;

             }

             $mid = intval(($head+$tail)/2);

             if($arr[$mid] == $find) {

                       return $mid;

             } else if($arr[$mid] < $find) {

                       return binSearch($arr,$mid+1,$tail,$find);

             } else {

                       return binSearch($arr,$head,$mid-1,$find);

             }

    }

    注意:

        在计算中间位置的时候不能直接写$mid = ($head+$tail)/2;,因为PHP是弱类型语言,它并不会将($head+$tail)/2得到的结果强制转化为整数,所以得到的有可能是小数,而数组的下标数值是没有小数的,从而导致程序出错。所以在这里使用intval函数对得到的结果进行取整。关于PHP的取整函数,若想了解更多,可以参考我的另一篇博文:PHP的取整函数

         

  • 相关阅读:
    R基础-适合于纯小白
    endnote将参考文献导入word中
    百度学术导入endnote出现choose an import filter解决
    数据梳理、降维--主成分分析、超易懂实例及R语言实现
    R语言输出高质量图片
    方向导数,偏导数,梯度
    开通博客
    存储引擎
    消息队列的两种模型
    消息队列的应用场景
  • 原文地址:https://www.cnblogs.com/wujuntian/p/4778747.html
Copyright © 2011-2022 走看看