<?php

//        PHP 二分查找

function search($arr, $sea){

$low = 0;                // 确定数组的开始的下标

$len = count($arr)-1;    // 确定数组的最后一下标  数组的长度-1

//echo $len; exit;

while( $low <= $len ) {

// 向下取整    2.9 => 2

$num = floor(($low + $len) / 2);

//echo $num; echo "<br><br><br>";

// 中间元素 和 要查询的比较大小

// 判读是否是中间的那为数 是 返回
       
        if($arr[$num] == $sea){

return $num;

}

// 中间元素比目标大,查找左部

if($arr[$num] > $sea){

$len = $num - 1;

//echo $len; echo "<br>";

}
        
        // 中间元素比目标小,查找右部

if($arr[$num] < $sea) {

$low = $num + 1;

//echo $low; echo "<br>";

}

}

return false;

}

//使用二分式算法查找数据

$arr = array(1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29);

//   0  1  2  3  4  5    6   7  8   9   10  11  12  13  14

$sch['1'] = search($arr, 27);      //  结果 13

//    $num = 7

//  $arr['7'] = 15 < 27      $low = 8; $num = (8 + 14)/2 = 11

//    $arr['11'] = 23 < 27     $low = 12; $num = (12 + 14)/2 = 13

//     $arr['13'] = 27 = 27

$sch['2'] = search($arr, 17);     //  结果 8

//    $num = 7

// $arr['7'] = 15 < 17        $low = $num + 1 = 8;     $num = (8 + 14)/2 = 11

// $arr['11'] = 23 > 17        $len = $num - 1 = 10;     $num = (8 + 10)/2 = 9

// $arr['9'] = 19 > 17        $len = $num - 1 = 8;    $num = (8 + 8 )/2 = 8

// $arr['8'] = 17 = 17

var_dump($sch);        // array(2) { [1]=> float(13) [2]=> float(8) }

?>

最新文章

  1. Android仿微信拍摄短视频
  2. 95、Jenkins部署.net持续集成自动化测试环境
  3. Server.UrlEncode与Server.UrlDecode(url传递中文的解决方案)
  4. Logistic回归原理及公式推导[转]
  5. Delphi DecodeDate和EncodeDate 拆分和聚合时间函数的用法
  6. 2015南阳CCPC D - Pick The Sticks dp
  7. soinn
  8. sdk 提示至少需要Build-tools 19.1.0以上的解决方式
  9. c语言位运算符
  10. 集合及特殊集合arrayList
  11. python核心编程-第五章-习题
  12. Hadoop学习笔记(2)hadoop框架解析
  13. ZOJ 3702 Gibonacci number
  14. Redis~Linux环境下的部署
  15. C++入门程序作业1
  16. 使用Vuex心得
  17. java生成excel,word文件
  18. gentoo: startx: drmsetmaster failed: permission denied
  19. springboot 学习之路 17(webflux 入门 (1))
  20. Codeforces Round #522 (Div. 2, based on Technocup 2019 Elimination Round 3) Solution

热门文章

  1. 【linux】学习4
  2. 【python】入门学习(八)
  3. NEFU 506&amp;&amp;ZOJ 3353 Chess Board (四种构造的高斯消元)
  4. rsync错误日志
  5. apache vhost
  6. nohup命令
  7. Mysql复制语句
  8. EF &ndash; 1.模式
  9. MVC公开课 &ndash; 2.查询,删除 (2013-3-15广州传智MVC公开课)
  10. oracle的oci和thin区别(数据源)