zoukankan      html  css  js  c++  java
  • 二分查找-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);
    }
    }
    }
  • 相关阅读:
    io系列之常用流一
    C++ 函数参数的默认值
    C++ 函数匹配和作用域声明
    c++ vector 迭代器 demo
    C++ 函数重载和匹配
    C++函数重载和const
    C++函数重载
    iOS开源项目
    Linux系统/网络 笔记
    IO五种模式
  • 原文地址:https://www.cnblogs.com/dongtong/p/7573623.html
Copyright © 2011-2022 走看看