算法:二分法

定义

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。在一个有序二维数组中,查找指定的值对应的键(下标)。

适用场景

有序数组

实现代码

<?php 
    public function binarySearch($arr=[], $key=null) {
        $left = 0;
        $right = count($arr) - 1;
        while( $left<=$right ) {
            $middle = floor( ($left+$right)/2 );
            if($key == $arr[$middle]) return $middle;
            elseif($key > $arr[$middle]) $left = $middle + 1;
            else  $right = $middle - 1;
        }
        return -1;
    }
?>

二分法变种

有时候数组虽然是有序的,但是可能有多个重复的值,这时我们的需求就要变动了,算法也要做相应的调整。

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

相关阅读更多精彩内容

友情链接更多精彩内容