二分查找的简单实现

来源:互联网 发布:java interface 缩写 编辑:程序博客网 时间:2024/05/16 23:50

          今天,南京的天空灰蒙蒙的,我又再一次的打了一天的酱油,在这即将下班的时候,我还是决定做点什么,于是这篇博客诞生了!!!

         二分查找法的有点就是超找速度快,查找的次数少,但是有个很严重的局促性,就是待查的数组必须要是有序的

        

           public function Twosearch(){
               $arr = array(4,7,9,13,35,38,56,57,78);
               $target = 56;
               $lower = 0;
               $high = count($arr)-1;
               while ($lower<=$high){
                   $middle = intval(($lower+$high)/2);
                   if($arr[$middle]>$target){
                        $high = $middle-1;
                   }else if($arr[$middle]<$target){
                       $lower = $middle+1;
                   }else{
                       echo $middle;exit;
                  }
           }
           echo "没有查找的数据";
      }

      下面我来解读一下这个程序,目标数是$arr长度是9,首先找到$arr的中间值,与目标数比较大小,如果比目标数大,则说明目标数在$arr的右半部,否则在左半部。

       如果在右半步,则要重新招最大值,显然最大值为$middle-1;如果在左半步,则要找最小值,显然为$middle+1;重复次循环,直到直到位置

0 0
原创粉丝点击