二分查找

Posted wzzkaifa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找相关的知识,希望对你有一定的参考价值。


算法解析:


    假设搜寻的数列已经排好序,应该尽量利用他们排好序的特性。以降低搜寻比对的次数。这是查找的基本原则,二分查找就是这个原则的代表。在二分查找中,从数列的中间開始查找,假设这个数小于我们所要查找的数,因为数列已排序,则该数左边的数一定小于要查找的数。假设要查找的数大于中间数。则从左边查找。


算法实现:


<?

php function bin_sch($array,$low,$high,$k){ if($low<=$high){ $mid=intval(($low+$high)/2); if($array[$mid]==$k){ return $mid; }elseif($k<$array[$mid]){ return bin_sch($array,$low,$mid-1,$k); }else{ return bin_sch($array,$mid+1,$high,$k); } } return-1; }


//非递归版本号

function binsearch($key,$array){
 $count=count($array);
 $lower=0;
 $high=$count-1;
 while($lower<=$high){
   $middle=intval(($lower+$high)/2);
   if($array[$middle]>$key)
   $high=$middle-1;
   else if($array[$middle]<$key)
    $lower=$middle+1;
   else
    return  $middle;
  }
    return-1;
}
$array =  array(0,1,2,3,4,5,6,7,8,9);
echo binsearch(5,$array);


以上是关于二分查找的主要内容,如果未能解决你的问题,请参考以下文章

java 二分查找法

代码题(12)— 二分查找

二分查找代码

PHP实现二分查找算法(代码详解)

「算法笔记」一文摸秃二分查找

C语言二分查找