PHP數據結構(1) 二分查找

       二分查找的基本思路是將一個有序數組取中間的那個值和所查找的值進行大小比較,當所查找的值大於數組的中間值時,即說明該有序數組中間值前的所有值都小於該查找的值,所以可以將該數組中間值前的所有值排除,再從該數組中間值到該數組末尾的值中繼續查找所需值,其代碼實現如下:

     注:二分查找只適用於已經排好序的數組

<?php
//二分查找
function bin_search($array,$search){
$low=0;
$height=count($array)-1;//獲取數組長度

while($low<=$height){
$mid=floor(($low+$height)/2);//獲取中間數,強制轉換爲floor類型,防止出錯
if($array[$mid]==$search){
return $mid+1;//返回已找到的序號
}else if($array[$mid]<$search){
//當中間值小於所查值時,則$mid左邊的值都小於$search,此時要將$mid賦值給$low
$low=$mid+1;
}else if($array[$mid]>$search){
//此時說明中間值大於所查值,則$mid右邊的所有值都大於$search,此時要將$mid賦值給$height
$height=$mid-1;
}
return "查找失敗";//查找失敗,數組中不存在該值

}

}


$arr=array(1,4,6,33,75,88,89,93);
echo bin_search($arr,33);
echo bin_search($arr,66);


?>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章