PHP 二分查找(详细)
<?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) }
?>
转载于:https://www.cnblogs.com/laowenBlog/p/5421188.html
PHP 二分查找(详细)相关推荐
- 二分查找算法详细汇总
二分查找算法详细汇总 文章目录 二分查找算法详细汇总 二分查找算法介绍模板 算法思想 举例说明 模板实现 (1)递归方式实现 (2)非递归方式实现 二分查找问题相关难点问题1[前缀和 + 二分查找 + ...
- 二分查找,超详细解读与代码实现,看完不会取关
必要条件:给定的数组必须有序,否则不适用二分查找.如果传入的数组无序,则要先对其排序,再进行二分,查找.那排序问题可参考其它排序算法.这篇博文的重点是讲二分. 核心思路:二分区间,找到划分的区间中点位 ...
- 二分查找的相关内容(详细)
二分查找是学习算法的必修之课,然而二分查找有多种实现方式,根据题目要求可以使用不同的方法来实现,如果没有理清楚这些方法之间的差别,在实现算法时很容易乱了针脚,我将二分查找的相关方法介绍如下: 简单实现 ...
- 【二分查找】详细图解
二分查找 文章目录 二分查找 1. 简介 2. 例子 3. 第一种写法(左闭右闭) 3.1 正向写法(正确演示) 3.2 反向写法(错误演示) 4. 第二种写法(左闭右开) 4.1 正向写法(正确演示 ...
- 二分查找算法代码详细理解
前言 以前写了好多次的二分查找了,但对于一些细节感觉还是没有领悟道,比如while循环里面是否加上等号,mid是否要加一等等,每次写的时候虽然都过了,但总感觉是稀里糊涂的过的,这次特意来深度理解下二分 ...
- 二分查找——部分题目汇总——长长文详细分享
文章目录 前言 二分查找 第一题:二分查找 解题思路 GIF 代码 第二题:搜索插入位置 解题思路 代码 第三题:寻找旋转排序数组中的最小值 解题思路 代码 第四题:寻找峰值 解题思路 代码 第五题: ...
- 二分查找定边界(详细解析)
二分查找定边界 学习二分查找的过程中发现经常因为边界定的不正确导致最终结果出错,写篇博客整理一下.以下所有数组都默认是按升序排列的.Leetcode上这篇Binary Search 101总结得非常好 ...
- 面试前必知必会的二分查找及其变种
今天给大家带来的是二分查找及其变种的总结,大家一定要看到最后呀,非常非常用心的一篇文章,废话不多说,让导演帮我们把镜头切到袁记菜馆吧! 袁记菜馆内.... 店小二:掌柜的,您进货回来了呀,哟!今天您买 ...
- 《漫画算法2》源码整理-1 二分查找树 AVL树 红黑树
二分查找树 public class BinarySearchTree {private Node root;//查找结点public Node search(int data) {Node targ ...
最新文章
- 【坑爹】WebStorm编辑器突然回车不能换行了、回车不能使用、回车失效了!!!
- java 图像膨胀与腐蚀程序_膨胀和腐蚀 - 解决图像缺陷问题
- 从无头单链表中删除节点 结构之法 4
- Java黑皮书课后题第7章:*7.11(统计:计算标准差)编程练习题5.45计算数字的标准差。本题…计算标准差,使用一个数组存储x的每个数。编写测试程序,提示用户输入10个数字,显示平均值和标准差
- C语言随机数生成超详解
- android xml 多行注释,C#中的XML多行注释 - 我做错了什么?
- 面试中软性问题的套路与反套路
- C# dataGridView中的数据导出到excel
- 计算机组成原理-第3章-3.3
- python处理时间序列非平稳_用python做时间序列预测4:平稳/非平稳时间序列
- asp.net-DirectoryEntry基本操作入门
- 【转载】超级弹丸论破2再见绝望学园攻略
- 如何设置windows服务
- Windows11 使用IE浏览器
- 独到理解@java数据类型
- 「音箱」进化:小米、阿里向左,百度向右
- mysql 二叉树表设计_Mysql 索引模型 B+ 树详解
- HCNA之华为ensp基本操作总结
- MicrosoftExcel函数
- Java 求解买卖股票时机含冷冻期
热门文章
- KD-VLP:知识蒸馏和预训练还能这么结合?上科大IntelMSRA提出基于知识蒸馏的端到端多模态预训练模型...
- 深度学习加持的工业AI质检
- COCO 54.7mAP!DetectoRS目标检测:改进主干网,成就新高度!
- 开源、快速、高精度的椭圆检测—你值得拥有!
- 为什么别人学python比你快?那是因为你没掌握这几点,多注意哦~
- matlab中ga函数用法,matlab遗传算法ga函数
- anchor free 目标检测_《目标检测》系列之二:目标检测中的Anchor机制回顾
- 人工智能为什么这么火?
- arXiv与文献调研神器Connected Papers强强联合
- 自动驾驶路径规划论文解析(3)