本文主要是介绍二分查找/折中查找,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/*
二分查找的思想概要:给定一个有序数组,
计算出中间值mid,拿所需查找的数值(key)与其比较,
如果相等,则return;key<mid,则在数组的左边查找,否则右边查找。
*/
function binary_Search($array,$low,$hight,$key)
{
if($low<$hight)
{
$mid = intval(($low+$hight)/2); //intval()函数获取变量的整型,不能用于array和object
if($array[$mid]==$key) //如果相等,则return
{
return $mid;
}elseif ($array[$mid]>$key) { //key<mid,则在数组的左边查找,指针从最后一个元素指向$mid-1
return binary_Search($array,$low,$mid-1,$key);
}else{ //key>mid,则在数组的右边查找,指针从最后一个元素指向$mid+1
return binary_Search($array,$mid+1,$hight,$key);
}
}else{
return -1; //没找到return -1
}
}
$array = array(1,3,8,90,100); //定义数组
$key = 8; //所需查找的值
$low = 0; //指向数组开始的元素(指针)
$hight = count($array)-1; //指向数组最后一个元素
echo binary_Search($array,$low,$hight,$key);
这篇关于二分查找/折中查找的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!