如何在PHP项目中实现一个二分查找算法

  介绍

本篇文章给大家分享的是有关如何在PHP项目中实现一个二分查找算法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

二分查找法需要数组是一个有序的数组

假设我们的数组是一个递增的数组,首先我们需要找到数组的中间位置。

1。要知道中间位置就需要知道起始位置和结束位置,然后取出中间位置的值来和我们的值做对比。

2。如果中间值大于我们的给定值,说明我们的值在中间位置之前,此时需要再次二分,因为在中间之前,所以我们需要变的值是结束位置的值,此时结束位置的值应该是我们此时的中间位置。

3。反之,如果中间值小于我们给定的值,那么说明给定值在中间位置之后,此时需要再次将后一部分的值进行二分,因为在中间值之后,所以我们需要改变的值是开始位置的值,此时开始位置的值应该是我们此时的中间位置,直到我们找到指定值。

4。或者中间值等于最初的起始位置,或结束位置(此时说明给定值未找到),下面我们来用代码实现~

//循环实现   function  getValue (num, arr)美元   {//查才能找数组的中间位置   美元才能长度=count ($ arr);   美元才能开始=0;   结束=美元才能长度;   美元中间才能=地板((开始+结束美元)/2);//才能循环判断   而才能(start> end-1美元)   {才能   ,,,如果(arr(中间)==美元num)   ,,,{   ,,,,,return 中间+ 1;   ,,,},elseif (arr[中]& lt; num)美元   ,,,{   ,,,,,//如果当前要查找的值比当前数组的中间值还要打,那么意味着该值在数组的后半段   ,,,,,//所以起始位置变成当前的中间的值,最终位置不变。   ,,,,,开始=美元中间;   ,,,,,地板中间美元=((开始+结束美元)/2);   ,,,},{其他   ,,,,,//反之   ,,,,,结束=美元中间;   ,,,,,地板中间美元=((开始+结束美元)/2);   ,,,}   ,,}   return 才能;假;   } //递归实现/*   *,从数组中获取元素值   *,@param1  int  num美元,要查找的目标值   *,@param2  array  arr美元,要查找的数组   *,@param3  int 美元开始,查找的起始位置   *,@param4  int  $,查找的结束位置   *,@return 混合,找到了返回位置,没找到返回错误的   */function  getValue4 (num美元,美元arr start 美元;=,0,最终获得美元=,100){   ,,,//采用二分法查找   ,,,middle 美元;=,地板((最终获得美元+,开始美元),/,2);   ,,,//判断   ,,,如果(arr美元(美元中间),==,num美元){   ,,,,,//已经找到了,递归的出口   ,,,,,return  middle 美元;+,1;   ,,,}elseif (arr美元(美元中间),& lt;, num美元){   ,,,,,//要查找的元素在数组的后半段   ,,,,,start 美元;=,middle 美元;+,1;   ,,,,,//边界值   ,,,,,如果(start 美元;祝辞=,结束美元){   ,,,,,,,//没有找的到,但是已经超出边界值,递归出口   ,,,,,,,return 假;   ,,,,,}   ,,,,,//调用自己去查找:递归点   ,,,,,return  getValue4 (num, arr美元,美元开始,结束美元);,,//getValue4 (num, arr美元,51100)   还有,,,}{   ,,,,,//要查找的元素在数组的前半段   ,,,,,最终获得美元=,middle 美元;作用;1;   ,,,,,//判断边界值   ,,,,,如果(美元最终获得& lt;, 0) return 假;   ,,,,,//调用自己:递归点   ,,,,,return  getValue4 (num, arr美元,美元开始,结束美元);,,//getValue4 (num, arr美元0 49)   ,,,}   ,,,//都没有找到   ,,,return 假;   }

以上就是如何在PHP项目中实现一个二分查找算法,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

如何在PHP项目中实现一个二分查找算法