二分查找

来源:互联网 发布:mac装ros 编辑:程序博客网 时间:2024/06/04 18:13
/**
 * 二分查找-非递归,但先要对数组排序
 *
 * @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);
0 0
原创粉丝点击