php折半查找算法,php二分法查找(也叫折半查找)算法 (数组必须是从小到大的)
//php二分法查找(也叫折半查找)算法/ 數組必須是從小到大的
$abs=array(1,12,13,114,115,116,117,118);
//z查找數組的最大下標
$hight = count($abs) - 1 ;
$low =0;
$num = 6;
//var_dump($abs);
//基本思想
// 1首先找到根據下標找到中間這個數字
// 2如果要找的數字大于中間這個數字,則繼續向后進行二分查詢, 折半查詢
// 3如果要找的數字小于中間的數,則繼續向前進行二分法查詢,折半查詢 找到時 希望能同時找到元素下標
//如果起始下標大于終止下標,說明未找到
function dichotomy($abs,$low,$hight,$num) {
if($low > $hight){
return false;
}
//取出中間元素下標,現在是向下去
$center = floor(($low + $hight)/2);
if($abs[$center] > $num ){
//要查詢的數小于中間的數,向前查,那么這時候最大下標為 ,中間這個數的下標-1
$hight = $center-1;
//再進行遞歸調用
return dichotomy($abs,$low,$hight,$num);
}
else if($abs[$center] < $num){
//要查詢的數字大于中間的數字,向后查,那么這時候最大下標為,$hight 最小下標為 $center +1
$low = $center + 1 ;
return dichotomy($abs,$low,$hight,$num);
}else{
//找到這個數, 返回下標
return $center;
}
}
$date= dichotomy($abs,0,$hight,115);
var_dump($date);
?>
總結
以上是生活随笔為你收集整理的php折半查找算法,php二分法查找(也叫折半查找)算法 (数组必须是从小到大的)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华硕F540U怎么装win7系统 华硕F
- 下一篇: php 子类名,php的继承方法获取子类