定义 : 二分法查找针对的是一个有序的数据集合,每次通过与区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为0
    image.png
    示例代码 :

    1. <?php
    2. function bind_search($arr,$key){
    3. $high=count($arr); // 最大值为数组的最后一个元素
    4. if($high<=0){ // 数组中没有东西的时候不执行
    5. return 0;
    6. }
    7. $low=0;
    8. while ($low<=$high){
    9. // 找到中间值
    10. $mid=intval(($low+$high)/2);
    11. if($arr[$mid]==$key){
    12. return $mid; // 目标数等于中间数 返回目标数所在的位置
    13. }elseif($arr[$mid]>$key){ // 目标数小于中间数 在前半区
    14. $high=$mid-1;
    15. }else{ // 目标数大于中间数 在后半区
    16. $low=$mid+1;
    17. }
    18. }
    19. return 0; // 查找失败
    20. }
    21. $arr=[1,3,14,66,79,101,223,554,789,1008];
    22. echo bind_search($arr,79);