zoukankan      html  css  js  c++  java
  • php二分查找

    <?php
    /**
    * target要查找的值
    * 左、右指示符 left,right用来维持查找空间的指标
    * 中间指示符 mid 用来应用条件来确定我们应该向左查找还是向右查找的索引
    * from leetcode
    */
    function binSearch($arr, $target){
        $left = 0;
        // 数组下标由0开始长度减一
        $right = count($arr) - 1;
        while ($left<=$right) {
            $mid = intval(($left+$right)/2);
            if ($arr[$mid] == $target) {
                return $mid;
            } elseif ($arr[$mid] > $target) {
                // 中间值左边移动,查找左边边部分
                $right = $mid-1;
            } elseif ($arr[$mid] < $target) {
                // 中间值右边边移动,查找右边边部分
                $left = $mid+1;
            }
        }
        return -1;
    }
    
    $arr = [3,6,9,23,90,180,458];
    
    // 递归的写法
    function binSearch1($arr, $target, $left, $right){
        // 左边比右边的大则退出
        if ($left>$right) {
            return -1;
        }
        $mid = intval(($left+$right)/2);
        if ($arr[$mid] == $target) {
            return $mid;
        } elseif ($arr[$mid] > $target) {
            // 中间值左边移动,查找左边边部分
            return binSearch1($arr, $target, $left, $mid-1);
        } elseif ($arr[$mid] < $target) {
            // 中间值右边边移动,查找右边边部分
            return  binSearch1($arr, $target, $mid+1, $right) ;
        }
    }
    var_dump(binSearch($arr, 180));
    

      

  • 相关阅读:
    Redis服务器配置
    Spark History Server配置使用
    CentOS7.3安装Nginx
    U盘安装CentOS7的最终解决方案
    iconfont_3种引用方式
    div+css 让一个小div在另一个大div里面 垂直居中
    JavaScript数组方法
    addEventListener()和removeEventListener()
    js获取网页高度
    Linux修改命令行样式
  • 原文地址:https://www.cnblogs.com/jasonyou/p/13735474.html
Copyright © 2011-2022 走看看