PHP二分查找算法

二分查找算法使用前提是查找的数组必须是一个有序的元素数组

下面一个demo,表示如果要查找的元素包含在有序数组中,二分查找返回其索引位置

<?php 
// 设置内存使用
ini_set('memory_limit','5120M');
// 生成有序数组,供测试使用
$arr = range(1,111111119);
// 测试例子
echo getPos($arr,1,111111119),PHP_EOL;
/**
 * 二分查找获取元素位置
 * @param  array $arr 查找数组
 * @param  int $item 查找的元素
 * @return int 查找的元素索引
 */
function getPos($arr,$item)
{
    $low = 0;
    $high = count($arr) - 1;
    while ($low <= $high) {
        $cen = (int)(($low + $high)/2);
        if($item == $arr[$cen]){
            return $cen;
        }elseif ($item < $arr[$cen]) {
            $high = $cen - 1;
        }elseif ($item > $arr[$cen]) {
            $low = $cen + 1;
        }
    }
    return 'Not Found!';
}

在终端执行,测试执行效率

time php index.php 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容