国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP二分查找算法的實現方法示例

2024-05-05 00:00:03
字體:
來源:轉載
供稿:網友

本文實例講述了PHP二分查找算法的實現方法。分享給大家供大家參考,具體如下:

二分查找法需要數組是一個有序的數組

假設我們的數組是一個遞增的數組,首先我們需要找到數組的中間位置.

1. 要知道中間位置就需要知道起始位置和結束位置,然后取出中間位置的值來和我們的值做對比。

2. 如果中間值大于我們的給定值,說明我們的值在中間位置之前,此時需要再次二分,因為在中間之前,所以我們需要變的值是結束位置的值,此時結束位置的值應該是我們此時的中間位置。

3. 反之,如果中間值小于我們給定的值,那么說明給定值在中間位置之后,此時需要再次將后一部分的值進行二分,因為在中間值之后,所以我們需要改變的值是開始位置的值,此時開始位置的值應該是我們此時的中間位置,直到我們找到指定值。

4. 或者中間值等于最初的起始位置,或結束位置(此時說明給定值未找到),下面我們來用代碼實現~

//循環實現function getValue($num,$arr){  //查找數組的中間位置  $length=count($arr);  $start=0;  $end=$length;  $middle=floor(($start+$end)/2);  //循環判斷  while($start>$end-1)  {    if($arr[middle]==$num)    {      return middle+1;    } elseif($arr[middle]<$num)    {      //如果當前要查找的值比當前數組的中間值還要打,那么意味著該值在數組的后半段      //所以起始位置變成當前的middle的值,end位置不變。      $start=$middle;      $middle=floor(($start+$end)/2);    } else{      //反之      $end=$middle;      $middle=floor(($start+$end)/2);    }  }  return false;}
//遞歸實現/** 從數組中獲取元素值* @param1 int $num,要查找的目標值* @param2 array $arr,要查找的數組* @param3 int $start,查找的起始位置* @param4 int $end,查找的結束位置* @return mixed,找到了返回位置,沒找到返回false*/function getValue4($num,$arr,$start = 0,$end = 100){    //采用二分法查找    $middle = floor(($end + $start) / 2);    //判斷    if($arr[$middle] == $num){      //已經找到了,遞歸的出口      return $middle + 1;    }elseif($arr[$middle] < $num){      //要查找的元素在數組的后半段      $start = $middle + 1;      //邊界值      if($start >= $end){        //沒有找到,但是已經超出邊界值,遞歸出口        return false;      }      //調用自己去查找:遞歸點      return getValue4($num,$arr,$start,$end);  //getValue4($num,$arr,51,100)    }else{      //要查找的元素在數組的前半段      $end = $middle - 1;      //判斷邊界值      if($end < 0)return false;      //調用自己:遞歸點      return getValue4($num,$arr,$start,$end);  //getValue4($num,$arr,0,49)    }    //都沒有找到    return false;}

 

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 石台县| 江达县| 同仁县| 临海市| 望谟县| 水城县| 潍坊市| 和平区| 安多县| 宜兴市| 延川县| 惠水县| 大新县| 乌鲁木齐县| 云安县| 泾阳县| 元谋县| 阿拉尔市| 布拖县| 岱山县| 晋宁县| 镇坪县| 卢湾区| 海丰县| 隆德县| 招远市| 大邑县| 邵阳县| 志丹县| 百色市| 汉中市| 蕉岭县| 诸暨市| 云和县| 余庆县| 葵青区| 金溪县| 天峨县| 皮山县| 太白县| 兴安县|