php 数组二分法查找函数代码

PHP中数组二分法查找函数代码:

function binary_search($arr, $key) {
    $low = 0;
    $high = count($arr) - 1;

    while ($low <= $high) {
        $mid = intval(($low + $high) / 2);

        if ($arr[$mid] > $key) {
            $high = $mid - 1;
        } elseif ($arr[$mid] < $key) {
            $low = $mid + 1;
        } else {
            return $mid;
        }
    }

    return -1;
}

该代码实现了基本的二分法查找,通过输入数组和要查找的键来查找键的位置。

其中,$low为数组最小值的下标,$high为数组最大值的下标,$mid为中间值的下标。每一次循环,都将区间缩小一半,直到找到目标值或者缩小到区间为空。

示例1:

$arr = [1, 2, 3, 4, 5];
$key = 3;
$index = binary_search($arr, $key); // 2

if ($index !== -1) {
    echo "键为".$key."的元素下标为".$index;
} else {
    echo "键为".$key."的元素不存在";
}

数组 $arr 中包含了 1, 2, 3, 4, 5 五个数,要查找的键为3,则输出结果为“键为3的元素下标为2”。

示例2:

$arr = [1, 3, 5, 7, 9];
$key = 4;
$index = binary_search($arr, $key); // -1

if ($index !== -1) {
    echo "键为".$key."的元素下标为".$index;
} else {
    echo "键为".$key."的元素不存在";
}

数组 $arr 中包含了 1, 3, 5, 7, 9 五个数,要查找的键为4,则输出结果为“键为4的元素不存在”。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php 数组二分法查找函数代码 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月25日

相关文章

  • PHP实现权限管理功能示例

    下面是关于“PHP实现权限管理功能示例”的完整攻略,包括以下内容: 1. 需求分析 在实现权限管理系统之前,我们需要确定需求,明确应该具备哪些功能。例如: 用户的注册和登录 用户的角色以及角色的权限分配 对于不同权限的用户显示不同的内容 仅管理员才能进入后台管理页面 2. 数据库设计 在确定需要哪些功能后,我们需要设计数据库。例如: 用户表 字段 类型 描述…

    PHP 2023年5月24日
    00
  • PHP中echo和print的区别

    首先,需要了解echo和print是两个在PHP中用来向浏览器输出文本的语句。它们的最大区别在于print只能输出一个值且返回值为1,而echo可以输出多个值但是返回值为void。 下面我们来看一些示例: 示例一: 代码为: $name = "John"; echo "Hello, " . $name; print &…

    PHP 2023年5月26日
    00
  • php开启多进程的方法

    下面我将详细讲解PHP开启多进程的方法,并给出两个实际示例。 PHP开启多进程的方法 PHP单进程的性能有限,为了更高效地处理大量请求,可以使用多进程来提高效率。下面是PHP开启多进程的方法: 1. 使用pcntl_fork函数 使用pcntl_fork函数可以创建子进程,并在子进程中执行指定的程序,从而实现多进程运行。 $pid = pcntl_fork(…

    PHP 2023年5月23日
    00
  • PHP正则匹配到2个字符串之间的内容方法

    正则匹配是常用的字符串处理方法之一,在PHP中也有很好的支持。要匹配2个字符串之间的内容,我们可以使用正则表达式中的“正则分组”功能,具体步骤如下: 确定需要匹配的两个字符串,假设为$s1和$s2。 编写正则表达式,利用正则分组以匹配$s1和$s2之间的内容。例如,可以使用如下的正则表达式: preg_match(‘/’.$s1.'(.*)’.$s2.’/’…

    PHP 2023年5月26日
    00
  • 深入PHP异步执行的详解

    深入PHP异步执行的详解 什么是异步执行 异步执行是指某一段代码可以在原有代码流程中独立运行,不影响其他代码的执行流程,可以提高程序的性能和效率。 PHP异步执行的方式 异步执行方式一:多进程 多进程可以通过pcntl、posix等扩展进行实现。使用这种方式需要注意以下几点: 需要在操作系统级别创建新的进程,这会占用一定的系统资源。 子进程需要向父进程发送进…

    PHP 2023年5月26日
    00
  • php单例模式实现方法分析

    PHP单例模式实现方法分析 什么是单例模式? 单例模式是一种创建型设计模式,意味着仅能创建类的一个实例,且该实例能够在应用的各个部分访问。 单例模式的主要目的是限制某个类只能够创建一个实例,这样有助于解决代码中的耗时/消耗资源的问题,以及避免多个实例之间的数据同步和状态管理问题。 单例模式的实现方法 在PHP中实现单例模式,一般有以下两种方法: 1. 懒汉式…

    PHP 2023年5月27日
    00
  • PHP编程实现的TCP服务端和客户端功能示例

    下面我来详细讲解“PHP编程实现的TCP服务端和客户端功能示例”的完整攻略。 前置知识 在学习本篇攻略之前,需要具备以下基础知识: PHP基础语法和面向对象编程基础; TCP/IP协议基础; socket编程基础。 TCP/IP协议 TCP/IP协议是互联网的基础协议,它包含了TCP协议和IP协议两部分。其中,TCP协议是面向连接的协议,能够保证数据的可靠传…

    PHP 2023年5月23日
    00
  • php中用foreach来操作数组的代码

    当我们需要循环操作数组时,在php中使用foreach是非常方便和常用的方式。下面是使用foreach来操作数组的完整攻略: 1. foreach语法介绍 foreach语法如下: foreach (数组 as $key => $value) { //执行代码 } 其中,“数组”是需要循环操作的数组变量,它可以是一个数组,也可以是一个通过函数或方法返回…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部