每日一算法【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));

 

转载于:https://www.cnblogs.com/puler/p/5613028.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值