php非递归二分查找

 1 <?php
2 function check_data($array,$key){
3 $start = 0;//开始数组下标
4 $end = count($array)-1;//结束数组下标
5 $c = 0;//循环次数
6 while($start <= $end ){
7 $c++;
8 $mid = floor(($start+$end)/2);//数组中间下标
9 if($key > $array[$mid]){
10 $start = $mid;
11 if($end - $start == 1){
12 $check = 'not exist';
13 break;
14 }
15 }elseif($key < $array[$mid]){
16 $end = $mid;
17 if($end - $start == 1){
18 $check = 'not exist';
19 break;
20 }
21 }elseif($key == $array[$mid]){
22 $check = $key;
23 break;
24 }
25 }
26 return array($check,$c);
27 }
28 print_r(check_data(array(1,2,3,4,5,7,9,12,16,23,45,46,49,50,56),'51'));
29 ?>
posted @ 2012-03-20 12:16  小冰PHPer  阅读(203)  评论(0)    收藏  举报