初级学习!!
<?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);?>
<?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);?>
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 下面的评论
array_search
array_filter变通一下
array_keys
array_intersect不是什么都需要从原型开始的!