<?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
最新推荐文章于 2024-11-23 12:43:28 发布