zoukankan      html  css  js  c++  java
  • 查找算法

     1 <?php
     2  /**
     3  sequence search
     4  从第一个元素开始,依次同每个元素比较
     5  */
     6  function seq_search($arr,$n,$k){
     7      for($i=0;$i<$n;$i++){
     8          if($arr[$i]==$k){
     9              break;
    10          }
    11      }
    12      if($i<$n){
    13          return $i;
    14      }else{
    15          return -1;
    16      }
    17  }
    18  
    19  /**
    20  binary search 使用了递归
    21  */
    22  function binary_search_recursive($arr,$low,$high,$k){
    23      if($low<=$high){
    24          $mid=intval(($low+$high)/2);
    25          if($arr[$mid]==$k){
    26              return $mid;
    27          }else if($arr[$mid]<$k){
    28              return binary_search($arr,$mid+1,$high,$k);
    29          }else{
    30              return binary_search($arr,$low,$mid-1,$k);
    31          }
    32      }
    33      return -1;
    34  }
    35  
    36  /**
    37  binary search 未使用递归
    38  */
    39  function binary_search($arr,$low,$high,$val){
    40     $mid = floor(($low+$high)/2);
    41     while($val!=$arr[$mid]&&$low<$high){
    42         if($val<$arr[$mid]){
    43             $high = $mid-1;
    44         }
    45         if($val>$arr[$mid]){
    46             $low = $mid+1;
    47         }
    48         $mid = floor(($low+$high)/2);
    49     }
    50     return $val==$arr[$mid]?$mid:-1;
    51  }
    52  
    53  $arr = array(9,6,10,2,5,3,1,8);
    54  echo seq_search($arr,8,2);
    55  echo '<br/>';
    56  echo binary_search_recursive($arr,0,7,2);
    57  echo '<br/>';
    58  echo binary_search($arr,0,7,2);
    59   
  • 相关阅读:
    编辑推荐
    mybatis
    学习网址记录
    关于详情页的具体制作(四)
    关于详情页的具体制作(三)
    关于详情页的具体制作(二)
    关于详情页的具体制作(一)
    关于事件循环的一些总结
    vue生命周期的一些总结
    对于home主页的切换处理
  • 原文地址:https://www.cnblogs.com/lpfuture/p/2931659.html
Copyright © 2011-2022 走看看