二分查找

/**
 * 二分查找-非遞歸,但先要對數組排序
 *
 * @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);
發佈了48 篇原創文章 · 獲贊 11 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章