zoukankan      html  css  js  c++  java
  • [php] 数据结构&算法(PHP描述) 查找&&二分法查找

     1 <?php
     2 /**
     3  *  查找
     4  * 
     5  **/
     6 // 顺序查找
     7 function normal_search($arrData,$val) {
     8     $len = count($arrData);
     9     if($len == 0) return -1;
    10     for($i = 0;$i < $len; $i++ ) {
    11         echo "find No.",$i + 1," value = ",$arrData[$i]," is = ",$val,"? <br/>";
    12         // 找到了
    13         if($arrData[$i] == $val) return $i;
    14     }
    15     return -1; 
    16 }
    17 
    18 // 测试顺序查找
    19 $arrData = array(4,51,6,73,2,5,9,33,50,3,4,6,1,4,67);
    20 echo normal_search($arrData,6),"<br/>";
    21 echo normal_search($arrData,66),"<br/>";
    22 
    23 // 二分法查找(针对有序的列进行查找)
    24 function binary_search($arrData,$val) {
    25     $len = count($arrData);
    26     if($len == 0) return -1;
    27 
    28     $start = 0;
    29     $end   = $len - 1;
    30 
    31     while($start <= $end) {
    32         $middle = intval(($start + $end)/2);
    33         echo "start = ",$start," end = ",$end," middle = ",$middle,"<br/>";
    34         if($arrData[$middle] == $val) {
    35             return $middle;
    36         } elseif ($arrData[$middle] > $val) {
    37             $end = $middle - 1 ;
    38         } elseif ($arrData[$middle] < $val) {
    39             $start = $middle + 1;
    40         }
    41     }
    42     return -1; 
    43 }
    44 
    45 // 测试一下二分法查找
    46 $arrData = array(1,2,3,4,5,7,8,9,11,23,56,100,104,578,1000);
    47 echo binary_search($arrData,578),"<br/>";
    48 echo binary_search($arrData,66),"<br/>";
    think in coding
  • 相关阅读:
    5.4、获取对象信息
    5.3、继承和多态
    JS基础-组成
    js定时器
    js 原型链,继承,闭包,内存,泄露
    flex 布局
    点击导出table表格
    图片利用 new Image()预加载原理 和懒加载的实现原理
    js控制style样式
    自定义指令的用法
  • 原文地址:https://www.cnblogs.com/bluefrog/p/2555036.html
Copyright © 2011-2022 走看看