二分查找也叫做折半查找
/**
* 二分查找,要求数组已经排好顺序
* @param array $array 数组
* @param int $low 数组起始元素下标
* @param int $high 数组末尾元素下标
* @param $k 要查找的元素
* @return mixed 成功时返回数组下标,失败返回-1
*/
function binSch($array,$low,$high,$k){
if ($low <= $high) {
$mid = intval(($low + $high) / 2);
if ($array[$mid] == $k) {
return $mid;
} elseif ($k < $array[$mid]) {
return binSch($array,$low,$mid - 1,$k);
} else{
return binSch($array,$mid + 1,$high,$k);
}
}
return -1;
}
// 测试:二分查找
$arr2 = array(5,9,15,25,34,47,55,76);
echo binSch($arr2,0,7,47);//结果为5
登录后可发表评论