zoukankan      html  css  js  c++  java
  • 查找

    1.顺序查找

    $arr = array(1,2,3,4,4);
    //顺序查找
    function search($value, &$arr)
    {
        $arr_search = array();
        foreach ($arr as $k=>$v)
        {
            if($v==$value)
            {
                $arr_search[$k] = $v;
            }
        }
        
        if(empty($arr_search))
        {
            return false;
        }else{
            return $arr_search;
        } 
    }

    var_dump(search(4,$arr));

     2.二分法查找

    /**
     * 二分查找,前提是该数组必须是个有序的才行,如果不是必须先排序
     
    */
    $arr = array(1,2,3,4,5,6);
    function binarySearch($value, &$arr$leftIndex$rightIndex)
    {
        if($rightIndex<$leftIndex)
        {
            echo '找不到该数';
            exit();
        }
        
        //首先找到中间数,并不一定非得是正中间
        $middleIndex = round(($rightIndex+$leftIndex)/2);
        
        //如果大于则,向后找
        if($value>$arr[$middleIndex]){
            binarySearch($value$arr$middleIndex+1, $rightIndex);
        }elseif($value<$arr[$middleIndex]){
            binarySearch($value$arr$leftIndex$middleIndex-1);
        }else{
            echo '找到了,下标是:'.$middleIndex;
        }
    }

    print_r(binarySearch(6, $arr, 0, count($arr)-1));
  • 相关阅读:
    JavaEE Tutorials (25)
    洛谷 P2677 超级书架 2
    洛谷 P1029 最大公约数和最小公倍数问题
    洛谷 P1305 新二叉树
    洛谷 P3817 小A的糖果
    洛谷 P1618 三连击(升级版)
    洛谷 P2097 资料分发1
    洛谷 P1068 分数线划定
    洛谷 P1207 [USACO1.2]双重回文数 Dual Palindromes
    洛谷 P1223 排队接水
  • 原文地址:https://www.cnblogs.com/siqi/p/2667391.html
Copyright © 2011-2022 走看看