初级学习!!
<?php
//普通查找方法
function Search(&$arr,$findVal)
{
$flag = false;
for($i = 0 ; $i<count($arr);$i++)
{

if($findVal == $arr[$i])
{

echo "find i ,xiao biao is : $i";
$flag = true;
}
}
if(!$flag)
{
echo " search none!!";
}
}
//二分发查找
function binarySearch(&$arr,$findVal,$right,$left)
{ $middle = round(($right + $left)/2);
echo $middle;
if($right < $left){
echo "error !!\n";
return;
}
if($findVal > $arr[$middle])
{
 binarySearch($arr,$findVal,$middle +1,$left);
}else if($findVal < $arr[$middle])
{
 binarySearch($arr,$findVal,$right,$middle -1);
}else{
echo "find this shu xia biao is :$middle ";
}
} $arr = array(44,45,90,98,110);

binarySearch($arr,44 ,count($arr)-1,0);

//二分发查找  function Dichotomy($php,$k,$low=0,$max=0)  {    if(count($php)!= 0 and $max == 0)    {        $max = count($php);    }    if($low <= $max)    {    $mid = intval(($low+$max)/2);    if($php[$mid] == $k)    {        return $mid;    }    else if($k < $php[$mid])    {        return Dichotomy($php,$k,$low,$mid-1);    }    else    {        return Dichotomy($php,$k,$mid+1,$max);    }    }    return -1;  }  $php = array('1','2','3','4','5','6');  echo Dichotomy($php,5);?>

解决方案 »

  1.   

    <?php
    function Array_BinarySearch( $needle, $haystack, $comparator , &$probe )
    {
        $high = Count( $haystack ) -1;
        $low = 0;
        
        while ( $high >= $low )
        {
            $probe = Floor( ( $high + $low ) / 2 );
            $comparison = $comparator( $haystack[$probe], $needle );
            if ( $comparison < 0 )
            {
                $low = $probe +1;
            }
            elseif ( $comparison > 0 ) 
            {
                $high = $probe -1;
            }
            else
            {
                return true;
            }
        }
        //The loop ended without a match 
        //Compensate for needle greater than highest haystack element
        if($comparator($haystack[count($haystack)-1], $needle) < 0)
        {
            $probe = count($haystack);
        } 
        return false;
    }
    ?>参考:http://php.net/manual/en/function.array-search.php 下面的评论
      

  2.   

    in_arrar
    array_search
    array_filter变通一下
    array_keys
    array_intersect不是什么都需要从原型开始的!