文章 PHP php算法-二分查找

php算法-二分查找

发布时间:2021-12-16 14:07:48编辑:admin

普通二分查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function binarySearch($arr,$num){
        if(!is_array($arr) || empty($arr)){
            return false;
        }
         
        $len count($arr);
        $first = 0;
        $last $len - 1;
        while($first <= $last){
            $m = (int)(($first $last)/2);
            if($num $arr[$m]){
                $last $m-1;
            }else if($num $arr[$m]){
                $first $m + 1;
            }else{
                return $m;
            }
        }
    }

递归实现

1
2
3
4
5
6
7
8
9
10
11
12
13
function binarySearchRecursion
($arr,$num,$first,$last){
        $m = (int)(($first $last)/2);
        if($first $last){
            return -1;
        }
        if($num $arr[$m]){
            return search1($arr,$num,$m+1,$last);
        }else if($num $arr[$m]){
            return search1($arr,$num,$first,$m - 1);
        }else{
            return $m;
        }
    }