php 二分查询算法实现

原理:二分查找算法(Binary Search)是一种针对有序数组的查找算法。它的原理是通过将查找区间逐渐缩小一半来快速定位要查找的目标值。

应用场景:

  1. 数据库或文件系统索引查找:在数据库或文件系统中,索引是有序存储的,可以使用二分查找算法来查找目标值。
  2. 字典等有序数据的查找:若字典中的单词按照字母顺序排序,可以使用二分查找在字典中快速定位某个单词。
  3. 数组中的元素查找:如果数组已经有序,可以使用二分查找在数组中查找某个元素。

首先,将数组按照升序排列。 然后,确定要查找的目标值。

接着,设置两个指针,一个指向数组的起始位置,一个指向数组的结束位置。

在每一次循环中,取指针之间的中间位置的值,并将其与目标值进行比较。

如果中间值等于目标值,返回该中间索引。

如果中间值大于目标值,将右指针移到中间位置的前一个位置。

如果中间值小于目标值,将左指针移到中间位置的后一个位置。

不断重复以上步骤,直到找到目标值或者左指针大于右指针为止。 最后,如果没有找到目标值,返回-

1。 下面是一个示例的PHP代码实现:

 

function binarySearch($array, $target) {
    $left = 0;
    $right = count($array) - 1;
    while ($left <= $right) {
        $mid = floor(($left + $right) / 2);
        if ($array[$mid] == $target) {
            return $mid;
        }
        if ($array[$mid] > $target) {
            $right = $mid - 1;
        } else {
            $left = $mid + 1;
        }
    }
    return -1;
}
// 示例用法
$array = [1, 3, 5, 7, 9];
$target = 7;
$result = binarySearch($array, $target);
echo "目标值的索引为:" . $result;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/126106.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

谷歌插件报错 Manifest version 2 is deprecated, and support will be removed in 2023.

点开错误发现 高亮部分有问题。 下面是这个插件的解压后的原始包&#xff1a;我们主要就去找json结尾的东西 就这两个 一个个排除 找到了 把2 改成3就可以了 一定要记得保存&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff0…

计算机考研408有多难?25考研经验贴,开个好头很有必要

前言 大家好&#xff0c;我是陈橘又青&#xff0c;相信关注我的各位小伙伴们中&#xff0c;大多都是在计算机专业的大学生吧&#xff01; 每天都有许多人在后台私信我&#xff0c;问我要不要考研&#xff0c;我想说这个东西是因人而异的&#xff0c;像我本人就选择了就业&…

网络通信——与Socket交换数据(三十一)

1. 与Socket交换数据 1.1 知识点 &#xff08;1&#xff09;通过Android与Socket完成基本的Echo程序实现&#xff1b; &#xff08;2&#xff09;通过对象序列化进行大数据的传输&#xff1b; 1.2 具体内容 对于网络的开发而言&#xff0c;最常使用的交互模式&#xff1a;W…

力扣197. 上升的温度

【版本1】&#xff1a; select w2.id from Weather w1 inner join Weather w2 on w1.recordDate subdate(w2.recordDate,1) where w2.Temperature > w1.Temperature【小记】 1、遇到这种某个字段与自身相比&#xff08;今天温度和昨天温度比&#xff0c;是温度这个字段…

11.8 33oj 模拟赛总结(时间安排 + 题解(数学 + 二分 + 括号匹配DP + 性质DP))

文章目录 考试时间及策略考试结果赛后总结题解Balance AddictsBoboniu and StringBracket InsertionConveyor 考试时间及策略 7:40 - 8:00 开题。T1 应该是个dp, 但是好像有点恶心。T2是个神秘构造。T3是个求随机括号匹配的概率&#xff0c;一眼应该是个 n 3 n^3 n3 的…

一篇博客读懂单链表——Single-List

目录 一、初识单链表 单链表是如何构造的&#xff1a; 单链表如何解决顺序表中的问题&#xff1a; 二、单链表的初始定义 三、尾插和头插 3.1 新建结点CreateNode 3.2 打印SLTPrint 3.3 尾插SLTPushBack 3.4 头插SLTPushFront 四、尾删和头删 4.1 尾删SLTPopBack…

蓝牙安全管理(SM:Security Manager)规范详解

总述 配对(Pairing)分为三个阶段&#xff0c;前两个阶段是必须的&#xff0c;而第三阶段是可选的&#xff0c;三个阶段如下&#xff1a; 阶段1&#xff1a;配对功能交换(Pairing Feature Exchange) 阶段2(LE传统配对 LE legacy pairing)&#xff1a;短期密钥(STK:Short Term…

【Python大数据笔记_day04_Hadoop】

分布式和集群 分布式:多台服务器协同配合完成同一个大任务(每个服务器都只完成大任务拆分出来的单独1个子任务) 集群:多台服务器联合起来独立做相同的任务(多个服务器分担客户发来的请求) 注意:集群如果客户端请求量(任务量)多,多个服务器同时处理不同请求(不同任务),如果请求量…

为什么推荐从Linux开始了解IT技术

IT是什么&#xff0c;是干什么的呢&#xff1f; 说起物联网&#xff0c;云计算&#xff0c;大数据&#xff0c;或许大家听过。但是&#xff0c;你知道&#xff0c;像云计算的底层基座是什么呢&#xff1f;就是我们现在说的Linux操作系统。而云计算就是跑在Linux操作系统上的一个…

商越科技:渗透测试保障平台安全,推动线上采购高效运转

商越科技是数字化采购解决方案提供商&#xff0c;在同赛道企业中始终保持前列。商越科技通过自主研发的智能采购中台、SaaS应用及运营服务等为企业搭建专属的互联网采购平台&#xff0c;帮助企业实现采购数字化以及智能化转型&#xff0c;提高工作效率、降低采购成本。 打造数字…

自建网盘平台搭建(源码+教程)

为什么要自己搭建网盘&#xff0c;现在许多大厂的网盘&#xff0c;文件都添加了许多限制&#xff0c;有好多文件会遭到和谐&#xff0c;而且大部分网盘也都会限速&#xff0c;不开通VIP是很难用的&#xff01;这是一套可以运营的网盘&#xff0c;代码无加密可以进行二次开发。下…

【java】【MyBatisPlus】【四】【完】MyBatisPlus一些实战总结(枚举、翻页、sql、组合条件、自增主键、逻辑删除)

目录 一、枚举 1、数据库type字段是Integer 类型枚举 2、创建一个该字段的枚举类 TypeEnum 3、修改实体类 4、配置文件新增mybatis-plus的配置 5、检验&#xff1a; 5.1 查询显示 5.3 库里验证 二、自增主键不是id字段处理 三、逻辑删除字段不是delete字段处理 1、实…

[动态规划] (十四) 简单多状态 LeetCode LCR 091.粉刷房子

[动态规划] (十四) 简单多状态 LeetCode LCR 091.粉刷房子 文章目录 [动态规划] (十四) 简单多状态 LeetCode LCR 091.粉刷房子题目解析解题思路状态表示状态转移方程初始化和填表顺序返回值 代码实现总结 LCR 091. 粉刷房子 题目解析 (1) 一排房子&#xff0c;共有n个 (2) 染…

在任何机器人上实施 ROS 导航堆栈的指南

文章目录 路径规划参考 路径规划 路径规划是导航的最终目标。这允许用户向机器人给出目标姿势&#xff0c;并让它在给定的环境中自主地从当前位置导航到目标位置。这是我们迄今为止所做的一切&#xff08;地图绘制和本地化&#xff09;的汇集点。ROS 导航堆栈已经为我们完成了…

CSDN每日一题学习训练——Java版(克隆图、最接近的三数之和、求公式的值)

版本说明 当前版本号[20231109]。 版本修改说明20231109初版 目录 文章目录 版本说明目录克隆图题目解题思路代码思路参考代码 最接近的三数之和题目解题思路代码思路参考代码 求公式的值题目解题思路代码思路参考代码 克隆图 题目 给你无向 连通(https://baike.baidu.com…

Docker两个容器互相请求接口

BEGIN 环境&#xff1a;Docker-Windows-Hyperf 1. 过以下命令查看Docker中的所有网络 docker network ls这个命令会列出所有的Docker网络&#xff0c;包括其ID、名称、驱动以及作用范围 在 Docker 中&#xff0c;容器通过 Docker 网络进行相互通信&#xff1b;在 Docker 中有…

第二十七章 解读Transformer_车道线检测中的Transformer(车道线感知)

前言 近期参与到了手写AI的车道线检测的学习中去&#xff0c;以此系列笔记记录学习与思考的全过程。车道线检测系列会持续更新&#xff0c;力求完整精炼&#xff0c;引人启示。所需前期知识&#xff0c;可以结合手写AI进行系统的学习。 SE简单实现 class SELayer(nn.Module):d…

Invalid bound statement (not found)

说明&#xff1a;记录一次Mapper.xml调用数据库存储过程的错误&#xff1b; 报错信息&#xff1a;Invalid bound statement (not found)&#xff0c;Mapper的全限定类名 场景&#xff1a;我仔仔细细核对过了方法名&#xff0c;参数&#xff0c;都没有问题&#xff0c;使用插件…

基于 HarmonyOS 的 HTTPS 请求过程开发示例(ArkTS)

介绍 本篇 Codelab 基于网络模块以及 Webview 实现一次 HTTPS 请求&#xff0c;并对其过程进行抓包分析。效果如图所示&#xff1a; 相关概念 ● Webview&#xff1a;提供 Web 控制能力&#xff0c;Web 组件提供网页显示能力。 ● HTTP数据请求&#xff1a;网络管理模块&am…

开发知识点-Django

Django 1 了解简介2 Django项目结构3 url 地址 和视图函数4 路由配置5 请求及响应6 GET请求和POST请求查询字符串 7 Django设计模式及模板层8 模板层-变量和标签9 模板层-过滤器和继承继承 重写 10 url反向解析11 静态文件12 Django 应用及分布式路由创建之后 注册 一下 13 模型…