• 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的取整函数

         

  • 相关阅读:
    Android 之 JSON操作
    android 之 XMLPull
    DOM 之 SAX操作
    android之DOM生成与解析
    parseDouble()方法
    读取遥感图像中遇到的问题集锦
    xml学习
    linux基础
    hadoop的基本概念 伪分布式hadoop集群的安装 hdfs mapreduce的演示
    【原】自定义tableViewCell的两种方法
  • 原文地址:https://www.cnblogs.com/wujuntian/p/4778747.html
Copyright © 2020-2023  润新知