二分查找算法(折半查找算法)

  二分查找也叫折半查找,是每次查找集合中的一半。

1 $arr = [3,5,10,20,22,26,55,59,63,68];

  如上所示数组,如果现在要查找68所在的位置,使用遍历比较的话,最坏情况需要查找10次,而如果使用二分查找算法的话,只需比较3次就能找到,大大提高了查找效率。

  当然,数量小的数组可能看不出很大的差异,如果数组特别大,就能明显的比较出来。

  PHP代码如下:

 1 function erfen($arr,$v){
 2     $start = 0;
 3     $end = count($arr)-1;
 4     //开始位置大于结束位置时结束循环
 5     while($start <= $end){
 6         $mid = intval(($start+$end)/2);
 7 
 8         if($arr[$mid] > $v){
 9             $end = $mid -1;
10         }elseif($arr[$mid] < $v){
11             $start = $mid + 1;
12         }else{
13             return $mid;
14         }
15     }
16     return -1;
17 }
18 
19 $arr = [3,5,10,20,22,26,55,59,63,68];
20 
21 echo erfen($arr,63);

  输出结果为8,即下标为8的元素为查找元素。

  注:传入数组必须为有序数组

猜你喜欢

转载自www.cnblogs.com/lxhyty/p/11268489.html
今日推荐