• 二分查找-php


    原理:假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

    优点:比较次数少,查找速度快,平均性能好;

    缺点:是要求待查表为有序表,且插入删除困难。

    适用于:不经常变动而查找频繁的有序列表

    function binarySearch(&$array,$findVal,$leftIndex,$rightIndex){
    $middleIndex=round(($rightIndex+$leftIndex)/2);
    if($leftIndex>$rightIndex){
    echo'查无此数<br/>';
    return;
    }
    if($findVal>$array[$middleIndex]){
    binarySearch($array,$findVal,$middleIndex+1,$rightIndex);
    }elseif($findVal<$array[$middleIndex]){
    binarySearch($array,$findVal,$leftIndex,$middleIndex-1);
    }else{
    echo"找到数据:index=$middleIndex;value=$array[$middleIndex]";
    if($array[$middleIndex+1]==$array[$middleIndex]&&$leftIndex<$rightIndex){
    binarySearch($array,$findVal,$middleIndex+1,$rightIndex);
    }
    if($array[$middleIndex-1]==$array[$middleIndex]&&$leftIndex<$rightIndex){
    binarySearch($array,$findVal,$leftIndex,$middleIndex-1);
    }
    }
    }
  • 相关阅读:
    sqlserver数据导入导出问题
    关于数据库冗余设计的思考
    cordova插件开发注意事项
    阿里云旺集成问题
    aspnet webapi 跨域请求 405错误
    跨域无法获取自定义header的问题
    angular input标签只能单向传递数据的问题
    android audio无法自动播放
    jquery mobile 问问多多
    mysql 表表连接的问题。
  • 原文地址:https://www.cnblogs.com/dongtong/p/7573623.html
Copyright © 2020-2023  润新知