算法解析:php
假设搜寻的数列已经排好序,应该尽可能利用他们排好序的特性。以下降搜寻比对的次数。这是查找的基本原则,二分查找就是这个原则的表明。在二分查找中,从数列的中间開始查找,假设这个数小于咱们所要查找的数,由于数列已排序,则该数左边的数必定小于要查找的数。假设要查找的数大于中间数。则从左边查找。算法
算法实现:post
<?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; }spa
//非递归版本号code
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);