首页 php教程 PHP开发 PHP二分查找算法示例【递归与非递归方法】

PHP二分查找算法示例【递归与非递归方法】

Dec 21, 2016 pm 01:51 PM
二分查找

本文实例讲述了PHP二分查找算法。分享给大家供大家参考,具体如下:

binarySearch

二分查找采用的方法比较容易理解,以数组为例:

① 先取数组中间的值floor((low+top)/2),

② 然后通过与所需查找的数字进行比较,若比中间值大,则将首值替换为中间位置下一个位置,继续第一步的操作;若比中间值小,则将尾值替换为中间位置上一个位置,继续第一步操作

③ 重复第二步操作直至找出目标数字

比如从1,3,9,23,54 中查找数字23,

首位置为0, 尾位置为4,中间位置就为2 值为9,比23小,则首位置更新为2+1即3;那么接下来中间位置就为(3+4)/2=3,值为23,比较相等即找到

//  非递归算法:
//  $target是要查找的目标 $arr是已经排序好的数组
function binary(&$arr,$low,$top,$target){
    while($low <= $top){
//由于php取商是有小数的,所以向下取整,不过也可不加,数组也会取整
      $mid = floor(($low+$top)/2);
      echo $mid."<br>";
      if($arr[$mid]==$target){
        return $arr[$mid];
      }elseif($arr[$mid]<$target){
        $low = $mid+1;
      }else{
        $top = $mid-1;
      }
    }
    return -1;
}
登录后复制

//  递归算法:
function binaryRecursive(&$arr,$low,$top,$target){
    if($low<=$top){
      $mid = floor(($low+$top)/2);
      if($mid==$target){
        return $arr[$mid];
      }elseif($arr[$mid]<$target){
        return binaryRecursive($arr,$mid+1,$top,$target);
      }else{
        return binaryRecursive($arr,$low,$top-1,$target);
      }
    }else{
      return -1;
    }
}
登录后复制

   

希望本文所述对大家PHP程序设计有所帮助。

更多PHP二分查找算法示例【递归与非递归方法】相关文章请关注PHP中文网!


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何使用C#编写二分查找算法 如何使用C#编写二分查找算法 Sep 19, 2023 pm 12:42 PM

如何使用C#编写二分查找算法二分查找算法是一种高效的查找算法,它在有序数组中查找特定元素的位置,时间复杂度为O(logN)。在C#中,我们可以通过以下几个步骤来编写二分查找算法。步骤一:准备数据首先,我们需要准备一个已经排好序的数组作为查找的目标数据。假设我们要在数组中查找特定元素的位置。int[]data={1,3,5,7,9,11,13

使用C语言编写的二分查找程序,使用pthread进行多线程处理 使用C语言编写的二分查找程序,使用pthread进行多线程处理 Aug 26, 2023 pm 12:45 PM

我们知道二分查找方法是一种最适合和有效的排序算法。这个算法适用于已排序的序列。算法很简单,它只是从中间找到元素,然后将列表分成两部分,并向左子列表或右子列表移动。我们知道它的算法。现在我们将看到如何在多线程环境中使用二分查找技术。线程的数量取决于系统中存在的核心数。让我们看一下代码以了解思路。示例#include<iostream>#defineMAX16#defineMAX_THREAD4usingnamespacestd;//placearr,keyandothervariabl

如何使用Python实现二分查找算法? 如何使用Python实现二分查找算法? Sep 20, 2023 pm 01:24 PM

如何使用Python实现二分查找算法?二分查找算法,也称为折半查找算法,是一种高效的查找算法。它适用于有序的数组或列表,通过将目标值与数组中间位置的元素进行比较,从而缩小查找范围。下面将介绍如何在Python中实现二分查找算法,并提供具体的代码示例。算法思路:将目标值与数组中间位置的元素进行比较;如果相等,则返回元素位置;如果目标值大于中间位置的元素,则在右

如何使用二分查找算法在C语言中找到数组中的最小元素? 如何使用二分查找算法在C语言中找到数组中的最小元素? Aug 25, 2023 pm 08:37 PM

C编程语言提供了两种搜索技术。它们如下所示:线性搜索二分搜索二分搜索这种方法只适用于有序列表。给定列表被分成两个相等的部分。给定的关键字与列表的中间元素进行比较。在这里,可能会发生三种情况,如下所示:如果中间元素与关键字匹配,则搜索将在此成功结束如果中间元素大于关键字,则搜索将在左侧分区进行。如果中间元素小于关键字,则搜索将在右侧分区进行。输入(i/p)-未排序的元素列表,关键字。输出(o/p)-成功-如果找到关键字失败-否则key=20mid=(low+high)/2程序1以下是使用二分查找在

使用二分查找算法找到一个数的立方根的Java程序 使用二分查找算法找到一个数的立方根的Java程序 Aug 28, 2023 pm 01:33 PM

立方根是一个整数值,当它自己连续乘以自己三次时,得到原始数值。在本文中,我们将编写一个使用二分搜索来找到一个数的立方根的Java程序。找到一个数的立方根是二分搜索算法的一个应用之一。在本文中,我们将详细讨论如何使用二分搜索来计算立方根。输入-输出示例Example-1:Input:64Output:4如,64的立方根为4,输出为4。Example-2:Input:216Output:6如,216的立方根为6,输出为6。二分查找二分搜索是一种用于查找元素(即排序数组中的键)的算法。二进制算法的工作

如何使用java实现二分查找算法 如何使用java实现二分查找算法 Sep 19, 2023 pm 12:57 PM

如何使用Java实现二分查找算法二分查找算法是一种高效的查找方法,适用于已排序的数组。它的基本思想是不断缩小查找范围,将查找值与数组中间的元素进行比较,并根据比较结果决定继续查找左半部分还是右半部分,直到找到目标元素或查找范围缩小为空。下面我们来具体介绍如何用Java实现二分查找算法。步骤一:实现二分查找方法publicclassBinarySearch

在C程序中,使用二分查找算法来搜索有理数,而不使用浮点数算术 在C程序中,使用二分查找算法来搜索有理数,而不使用浮点数算术 Aug 27, 2023 pm 06:05 PM

在这个问题中,我们得到了一个有理数的排序数组。我们必须使用二分搜索算法来搜索该有理数数组的给定元素,而不使用浮点运算。有理数是以p/q形式表示的数字,其中p和q都是整数。例如,⅔、⅕。二分搜索是一种搜索技术,通过查找数组的中间来查找元素。用于查找使用二分法搜索有理数排序数组中的元素,其中不允许浮点运算。我们将比较分子和分母,以找出哪个元素更大或哪个元素是要找到的元素。示例让我们为此创建一个程序,#include<stdio.h>structRational{ &am

PHP算法解析:如何使用二分查找算法在有序数组中快速定位元素? PHP算法解析:如何使用二分查找算法在有序数组中快速定位元素? Sep 19, 2023 pm 01:14 PM

PHP算法解析:如何使用二分查找算法在有序数组中快速定位元素?概述:二分查找算法是一种高效的查找算法,它适用于有序数组中查找特定元素。本文将详细介绍二分查找算法的原理,并给出PHP代码示例。原理:二分查找算法通过反复将查找范围缩小一半,从而快速定位目标元素。其流程如下:首先,将查找范围缩小为数组的开头和结尾;然后,计算中间元素的索引,将其与目标元素进行比较;

See all articles