<?php /** * 二分查找算法 (查找一個值在有序數組中的位置) * * @param array $arr 有序數組 * @param int $val 查找的數值 * @return int 查找值存在返回數組下標,不存在返回-1 */ function binary_search($arr,$val) { $l = count($arr); //獲得有序數組長度 $low = 0; //查找的起始位置,默認從數組的第一個數找起 $high = $l -1; //查找的結束位置 while($low <= $high) { $middle = floor(($low + $high) / 2); if($arr[$middle] == $val) { return $middle; }elseif($arr[$middle] > $val) { $high = $middle - 1; }else{ $low = $middle + 1; } } return -1; } //示例 $arr = array(1,2,3,4,5,6,7,8,9,12,23,33,35,56,67,89,99); echo binary_search($arr,56); ?>
二分查找算法 php
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.