zoukankan      html  css  js  c++  java
  • 二分查找算法(折半查找算法)

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

    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的元素为查找元素。

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

  • 相关阅读:
    006_02SQLite_OpenHelper
    006_01SQLite_demo
    005_01XML_Serilizer
    004_05PullParser
    004_04SharedPreferences
    004_02文件读写模式
    004_01获取SD容量
    003_01电话拨号器
    maven项目中的pom.xml
    ORACLE提示表名无效
  • 原文地址:https://www.cnblogs.com/lxhyty/p/11268489.html
Copyright © 2011-2022 走看看