//二分算法
public function actionTData(){
//数字1-10
$arr = [1,2,3,4,5,6,7,8,9,10];
$left = 0;
$right = count($arr)-1;
$target = 2;
echo '边界'.$left."---".$right;
while ($left <= $right){
$mid = ceil(($left+$right)/2);
if($arr[$mid] == $target){
return '找到了'.$arr[$mid];
}else if($arr[$mid] < $target){//中位数小于目标值 左边界移过去
$left = $mid+1;
echo '边界'.$left."=".$right;
}elseif ($arr[$mid] > $target){//中位数大于目标值 右边界移过去
$right = $mid-1;
echo '边界'.$left."=".$right;
}
}
return -1;
}
二分算法用处:提升计算速度
前提:必须为有序数组
例:想在1-100中查找某个目标数85,首先从中位数五十开始比较,看看目标数属于0-50还是50-100,若存在于50-100,则继续取五十和一百的中位数75进行比较,若目标数大于75则在75-100中进行查找,以此类推,每次运算可排除一半的选项