• 查找


    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));
  • 相关阅读:
    编程之美-2.18 数组分割
    话题模型
    暂时跳过的Leetcode题目
    LDA主题模型
    二叉树非递归的统一实现
    取余和取模运算
    IDM非补丁破解方法
    两种建立堆的方法HeapInsert & Heapify
    非阻塞connect:Web客户程序
    非阻塞connect
  • 原文地址:https://www.cnblogs.com/siqi/p/2667391.html
Copyright © 2020-2023  润新知