* 二分查找-非遞歸,但先要對數組排序
*
* @param unknown $arr
* @param unknown $low
* @param unknown $high
* @param unknown $search
* @return number|boolean
*/
function erfen_search($arr, $low, $high, $search)
{
while ($low <= $high) {
$mid = floor(($low + $high) / 2);
if ($search == $arr[$mid]) {
return $mid;
} elseif ($search > $arr[$mid]) {
$low = $mid + 1;
} else {
$high = $mid - 1;
}
}
return false;
}
echo erfen_search(xier_sort($arr), 0, count($arr), 223);
/**
* 二分查找-遞歸,但先要對數組排序
*
* @param unknown $arr
* @param unknown $low
* @param unknown $high
* @param unknown $search
* @return number
*/
function erfen_digui_search($arr, $low, $high, $search)
{
if ($low <= $high) {
$mid = floor(($low + $high) / 2);
if ($search == $arr[$mid]) {
return $mid;
} elseif ($search > $arr[$mid]) {
return erfen_digui_search($arr, $mid + 1, $high, $search);
} else {
return erfen_digui_search($arr, $low, $mid - 1, $search);
}
}
}
echo erfen_digui_search(xier_sort($arr), 0, count($arr), 223);