麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 邏輯算法 > 正文

PHP實現二分查找算法(代碼詳解)

2020-03-22 17:45:51
字體:
來源:轉載
供稿:網友
二分查找又稱折半查找,二分查找算法要求數據必須是有序的,以下是php實現二分查找算法的代碼。

一:遞歸方式

$array = [1,3,6,9,13,18,19,29,38,47,51,56,58,59,60,63,65,69,70,71,73,75,76,77,79,89];$target = 73;$low = 0;$high = count($array)-1;function bin_search($array, $low, $high, $target){    if ( $low <= $high){        var_dump($low, $high);echo "/n";        $mid =  intval(($low+$high)/2 );        if ($array[$mid] ==  $target){            return true;        }elseif ( $target < $array[$mid]){            return  bin_search($array, $low,  $mid-1, $target);        }else{            return  bin_search($array, $mid+ 1, $high, $target);        }    }    return false;}$find = bin_search($array, $low, $high, $target);var_dump($find);

執行結果

int(0)int(25)int(13)int(25)int(20)int(25)int(20)int(21)bool(true)

我們看到,經過4次二分查找,查找區間不斷折半,最終找到了$target。

二:循環方式

$array = [1,3,6,9,13,18,19,29,38,47,51,56,58,59,60,63,65,69,70,71,73,75,76,77,79,89];$target = 73;function bin_search($array, $target){    $low = 0;    $high = count($array)-1;    $find = false;    while (true){        if ($low <= $high){            var_dump($low, $high);echo "/n";            $mid = intval(($low + $high)/2);            if ($array[$mid] == $target){                $find = true;                break;            } elseif ($array[$mid] < $target){                $low = $mid+1;            } elseif ($array[$mid] > $target){                $high = $mid-1;            }        } else {            break;        }    }    return $find;}$find = bin_search($array, $target);var_dump($find);

執行結果

int(0)int(25)int(13)int(25)int(20)int(25)int(20)int(21)bool(true)

我們看到,兩種方式過程和結果相同。下面我們來測試下針對關聯數組的二分查找算法:

$array = ['a'=>1,'b'=>3,'c'=>6,'d'=>9,'e'=>13,'f'=>18,'g'=>19,'h'=>29,'i'=>38];$target = 19;function bin_search($array, $target){    $low = 0;    $high = count($array)-1;    $key_map = array_keys($array);    $find = false;    while (true){        if ($low <= $high){            var_dump($low, $high);echo "/n";            $mid = intval(($low + $high)/2);            if ($array[$key_map[$mid]] == $target){                $find = true;                break;            } elseif ($array[$key_map[$mid]] < $target){                $low = $mid+1;            } elseif ($array[$key_map[$mid]] > $target){                $high = $mid-1;            }        } else {            break;        }    }    return $find;}$find = bin_search($array, $target);var_dump($find);執行結果int(0)int(8)int(5)int(8)bool(true)

兩次二分查找,找到了$target,針對關聯數組,我們使用了php的array_keys函數獲得這個關聯有序數組的key,通過key間接比對$target和$array的值。

以上就是PHP實現二分查找算法(代碼詳解)的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄色大片在线免费观看 | 久久999精品久久久 国产噜噜噜噜久久久久久久久 | 国产三级a三级三级 | 欧美a级一区二区 | 一级尻逼视频 | 日日噜噜噜噜久久久精品毛片 | 国产四区| 日韩欧美视频一区二区三区 | 成人视屏免费看 | 91精品久久香蕉国产线看观看 | 黄色片网站在线免费观看 | 在线播放亚洲精品 | 一级爱片| 91看片在线观看视频 | 性生活视频一级 | 日韩精品久久久久久久电影99爱 | 成人区一区二区三区 | 91av亚洲 | 免费观看黄视频 | 中国洗澡偷拍在线播放 | 国产精品久久久久久久久久了 | 国产毛片网 | 欧美a久久 | 久色成人 | 羞羞视频免费网站含羞草 | 国产乱淫a∨片免费观看 | 国产好片无限资源 | 羞羞视频一区二区 | 久久免费视频一区 | 午夜生活理论片 | 羞羞的视频在线 | 中国妞xxxhd露脸偷拍视频 | 久久久久久久久国产 | 韩国精品视频在线观看 | 国产精品久久久久久久不卡 | 国产91影院| 色视频欧美 | 中文字幕在线亚洲精品 | 国产在线欧美日韩 | 久草资源在线观看 | 九九热这里只有精品8 |