【算法】如何在有序的数组中找到一个数的位置(递归)
程序员文章站
2022-03-01 17:46:50
...
function search($array,$value){
$length = count($array);
$left = 0;
$right = $length - 1;
return binary_search($array,$value,$left,$right);
}
function binary_search(&$array,&$value,$left,$right){
$mid = intval(($right + $left) / 2);
if($left > $right){
return -1;
}else if($array[$mid] == $value){
return $mid;
}else if($array[$mid] < $value){
$left = $mid + 1;
return binary_search($array,$value,$left,$right);
}else if($array[$mid] > $value){
$right = $mid;
return binary_search($array,$value,$left,$right);
}
}
$arr = [1,2,3,4,5,6,7,8,9,10];
echo search($arr,5); // 4
上一篇: 从n个数中找到和为m的数
下一篇: 求小于等于n的质数个数
推荐阅读
-
[PHP] 算法-统计一个数字在排序数组中出现的次数的PHP实现
-
一个数组nums,其中任意两个值等于给定值target,返回这两个值在nums里的位置
-
在C++的函数中如何指定一个数组,使得这个数组的大小由函数的输入值来决定
-
算法007:二分查找 请实现有重复数字的有序数组的二分查找,输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一
-
算法 - php如何将一个数组重复的元素合并到一个新的数组?
-
算法 - php如何将一个数组重复的元素合并到一个新的数组?
-
在C++的函数中如何指定一个数组,使得这个数组的大小由函数的输入值来决定
-
一个数组nums,其中任意两个值等于给定值target,返回这两个值在nums里的位置
-
php如何实现统计一个数字在排序数组中出现的次数(代码)
-
算法007:二分查找 请实现有重复数字的有序数组的二分查找,输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一