二分查找算法 php

来源:互联网 发布:net域名注册 编辑:程序博客网 时间:2024/05/23 15:37

<?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);?>

0 0