• 查找算法之二分查找法


    前提条件是

    1.数组必须是索引数组

    2.数组必须是一个排好序的数组(可参考上一篇进行排序)

        $a = array(11,13,18,28,29,33,34,52,54,61,68,79,80,84,88,89,92,93,98);
        $search = 35;
        $len = count($a);
        $v1 = binary_search($a, $search, 0, $len-1);
        echo "结果为:";
        var_dump($v1);
    
        function binary_search($arr, $s, $begin ,$end) {
            $mid = floor(($begin+$end)/2);
            $mid_value = $arr[$mid];
            if ($mid_value == $s) {
                return true;
            }
            else if ($mid_value > $s) {
                if ($begin > $mid-1) { //如果开始位置比结束位置大,表示肯定找不到
                    return false;
                }
                //中间的数比要找的数大,就去左边找  
                $re = binary_search($arr, $s, $begin, $mid-1);
            }
            else {
                if ($mid+1 > $end) { //如果开始位置比结束位置大,表示肯定找不到
                    return false;
                }
                //中间的数比要找的数小,就去右边找
                $re = binary_search($arr, $s, $mid+1, $end);
            }
            return $re;
        }
    

      

  • 相关阅读:
    hdu 4707 Pet
    hdu 3584 Cube (三维树状数组)
    poj 2155 Matrix (树状数组)
    poj 1195 Mobile phones (树状数组)
    工厂方法模式
    简单工厂模式
    关于设计模式
    UML类图
    UML
    【转载】UML用例图
  • 原文地址:https://www.cnblogs.com/zst062102/p/6899826.html
Copyright © 2020-2023  润新知