数组中查找

1、顺序查找:

function serach(&$arr,$value1){
    $flag=FALSE;
    for ($i=0; $i < count($arr) ; $i++) {
        if($arr[$i]==$value1){
            echo "找到该数,下标为:".$i;
            $flag=true;
            break;
        }
    }
    if(!$flag){
        echo "查无此数";
    }
    

}


2、二分查找:数组必须是有序的

function binarySearch(&$arr,$findVal,$leftIndex,$rightIndex){
    //如果递归过程中出现$leftIndex>$rightIndex,说明查不到该数
    if($leftIndex>$rightIndex){
        echo "查无此数";
        return;
    }
    $middleIndex=round(($leftIndex+$rightIndex)/2);
    //如果要查找的数比中间那个数小,则向前查找
    if($findVal<$arr[$middleIndex]){
        binarySearch($arr,$findVal,$leftIndex,$middleIndex-1);
        //如果要查找的数比中间那个数大,则向后查找
    }elseif($findVal>$arr[$middleIndex]){
        binarySearch($arr,$findVal,$middleIndex+1,$rightIndex);
    }else{
        echo "要查找的数下标就是".$middleIndex;
    }
}


posted @ 2018-02-28 21:32  smartwange  阅读(43)  评论(0)    收藏  举报