欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

php 二分查找

張春美1年前5瀏覽0評論

PHP是一種常見的編程語言,其廣泛使用的原因之一是其高效的搜索功能。其中,二分查找是一種在有序數組中查找特定元素的算法,也是開發者們最需要掌握的算法之一。本文將重點介紹php的二分查找算法,并通過舉例解釋該算法的使用。

二分查找是一種在已排序的數組中查找元素的算法。其思想是將數組分為左右兩部分,并確定目標元素可能出現的那一半。在每一次操作中,算法將當前數組范圍縮小一半,并檢查目標元素是否在中間點。如果目標元素小于中間點,則算法會將搜索范圍縮小到左半邊的數組;反之則縮小到右半邊的數組。通過反復這種操作,算法最終將找到目標元素,或者確定其不存在于數組中。

/**
* @param array $array 排序后的數組
* @param mixed $target 查找的目標元素
* @return int|false 返回目標元素所在位置或者false(不存在)
*/
function binary_search(array $array, $target){
$low = 0;
$high = count($array) - 1;
while($low <= $high){
$mid = floor(($low + $high)/2);
if($array[$mid] == $target){
return $mid;
}elseif($array[$mid] < $target){
$low = $mid + 1;
}else{
$high = $mid - 1;
}
}
return false;
}

下面是一個例子,待搜索數組為 [1, 3, 5, 7, 9],我們要查找數字 5 是否存在。我們開始時,將左邊界設置為 0,右邊界設置為 4(數組長度減 1),并計算出中間點的位置。

我們將中間點 2 上的元素 5 與目標元素 5 進行比較,有一項條件被滿足,算法返回 2,即目標元素所在的位置。如果目標元素是 4,而不是 5,那么我們會在下一次搜索中,將左邊界調整為 mid + 1(即 3),并繼續尋找目標元素。當搜索完數組仍然找不到目標元素時,算法返回 false。

$arr = [1, 3, 5, 7, 9];
$target = 5;
echo binary_search($arr, $target); // 2

我們可以看到,在上述例子中,算法僅花費 $logn$ 次操作就找到了目標元素。這比線性搜索算法的時間復雜度要優秀得多,后者平均需要 $n/2$ 次操作。在對大型數組進行搜索時,算法的效率比線性搜索提高了很多。

總結一下,二分查找是一種在已排序的數組中查找元素的高效算法。通過將數組分為左右兩部分,算法可以在 $logn$ 次操作內找到目標元素,或確定其不存在于數組中。在開發 PHP 應用程序時,掌握二分查找算法能夠有效提升系統的性能和穩定性。

下一篇php 主鍵