当前位置:首页 > PHP教程 > php应用 > 列表

PHP实现的二分查找算法实例分析

发布:smiling 来源: PHP粉丝网  添加日期:2021-08-23 11:44:32 浏览: 评论:0 

这篇文章主要介绍了PHP实现的二分查找算法,结合实例形式分析了二分查找算法的原理与循环、递归等实现技巧,需要的朋友可以参考下。

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

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

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

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

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

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

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

  1. //循环实现 
  2. function getValue($num,$arr
  3. //查找数组的中间位置 
  4. $length=count($arr); 
  5. $start=0; 
  6. $end=$length
  7. $middle=floor(($start+$end)/2); 
  8. //循环判断 
  9. while($start>$end-1) 
  10. if($arr[middle]==$num
  11. return middle+1; 
  12. }elseif($arr[middle]<$num
  13. //如果当前要查找的值比当前数组的中间值还要打,那么意味着该值在数组的后半段 
  14. //所以起始位置变成当前的middle的值,end位置不变。 
  15. $start=$middle
  16. $middle=floor(($start+$end)/2); 
  17. }else
  18. //反之 
  19. $end=$middle
  20. $middle=floor(($start+$end)/2); 
  21. }} 
  22. return false; 
  23.  
  24. //循环实现 
  25. function getValue($num,$arr
  26. //查找数组的中间位置 
  27. $length=count($arr); 
  28. $start=0; 
  29. $end=$length
  30. $middle=floor(($start+$end)/2); 
  31. //循环判断 
  32. while($start>$end-1) 
  33. if($arr[middle]==$num
  34. return middle+1; 
  35. }elseif($arr[middle]<$num
  36. //如果当前要查找的值比当前数组的中间值还要打,那么意味着该值在数组的后半段 
  37. //所以起始位置变成当前的middle的值,end位置不变。 
  38. $start=$middle
  39. $middle=floor(($start+$end)/2); 
  40. }else
  41. //反之 
  42. $end=$middle
  43. $middle=floor(($start+$end)/2); 
  44. }} 
  45. return false; 
  46. }

Tags: PHP二分查找算法

分享到: