您的位置 首页 php

二分查找(PHP)

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用 顺序存储结构 ,而且表中元素按关键字有序排列。

 <?php

	//递归方式
	$array = [1,3,6,9,13,18,19,29,38,47,51,56,58,59,60,63,65,69,70,71,73,75,76,77,79,89];

	$target = 73; //要查找的值

	$low = 0; //从0开始

	$high = count($array)-1;

	function bin_search($array, $low, $high, $target){

	    if ( $low <= $high){
	        var_dump($low, $high);echo "\n";
	        $mid =  intval(($low+$high)/2 );
	        if ($array[$mid] ==  $target){
	            return true;
	        }elseif ( $target < $array[$mid]){
	            return  bin_search($array, $low,  $mid-1, $target);
	        }else{
	            return  bin_search($array, $mid+ 1, $high, $target);
	        }
	    }
	    return false;
	}

	$find = bin_search($array, $low, $high, $target);

	var_dump($find);




	//循环方式

	$array = [1,3,6,9,13,18,19,29,38,47,51,56,58,59,60,63,65,69,70,71,73,75,76,77,79,89];

	$target = 73;

	function bin_search($array, $target)
	{
	    $low = 0;
	    $high = count($array)-1;
	    $find = false;
	    while (true){
	        if ($low <= $high){
	            var_dump($low, $high);echo "\n";
	            $mid = intval(($low + $high)/2);
	            if ($array[$mid] == $target){
	                $find = true;
	                break;
	            } elseif ($array[$mid] < $target){
	                $low = $mid+1;
	            } elseif ($array[$mid] > $target){
	                $high = $mid-1;
	            }
	        } else {
	            break;
	        }
	    }
	    return $find;
	}

	$find = bin_search($array, $target);

	var_dump($find);  

文章来源:智云一二三科技

文章标题:二分查找(PHP)

文章地址:https://www.zhihuclub.com/79296.shtml

关于作者: 智云科技

热门文章

网站地图