每日一算法【one】

//有一个数组  {1,2,3,4,5,6,7,8,9,12,13,45,67,89,99,101,111,123,134,565,677} 查找数组中是否有指定的某一个数.

 1 /**
 2   *----------------------------------------
 3   * Time:2016-06-21 | 二分查找
 4   *---------------------------------------
 5   */ 
 6 function binarySearch(&$arr,$findVal,$leftIndex,$rightIndex){
 7   if($rightIndex < $leftIndex){
 8     echo "哇哇哇,找不到o(︶︿︶)o 唉";
 9     return;
10   }
11   // @ 取中间的key
12   $middleIndex=round(($rightIndex+$leftIndex)/2);
13   if($findVal > $arr[$middleIndex]){
14     binarySearch($arr,$findVal,$middleIndex+1,$rightIndex);
15   }else if($findVal < $arr[$middleIndex]){
16     binarySearch($arr,$findVal,$leftIndex,$middleIndex-1);
17   }else{
18     echo "哇哇哇找到你了o(∩_∩)o 哈哈。下标是$middleIndex";
19   }
20 }
21     $arr=array(1,2,3,4,5,6,7,8,9,12,13,45,67,89,99,101,111,123,134,565,677);
22     print_r(binarySearch($arr,89,0,count($arr)-1));

 

posted @ 2016-06-24 08:57  Puler  阅读(416)  评论(0编辑  收藏  举报