PHP实现相邻数查找算法
PHP实现相邻数查找算法详细介绍
其实这个算法很好理解,比如我们有如下的数组数字:
$arr = array(4,5,6,5,6,7,8,9,10,9);
他们中间都是相差某个绝对值(比如上面都是相差1)。 1、我们用要查找的数减去第一个数字(想象如果我要找7的话,减去4,最早出现应该就是第四位(数组索引是3)出现这种情况是因为如果一切顺利,所有绝对值的更改都是加1的情况下才会出现,如果中间出现减1或者什么肯定还要靠后面。)
2、比较可能出现的位置的数是否与要查找的数一致,如果一致则直接返回(毫无疑问)。
3、如果这个数不一致,则只能说明这个数还在这个数组的后面(这里想想就能理解,因为最快达到的方法就是现在这个索引,不可能比他更快,所以这个只能在后面了)
4、如果循环完这个数组,这个数字还没出现只能证明数组里面没有这个数字。
代码实现:
<?php
function FindNumberInArray($arr,$number){
$startKey = abs($number-$arr[0]);
while($startKey<count($arr)){
if($arr[$startKey]==$number){
return $startKey;
}
$startKey += abs($number - $arr[$startKey]);
}
return -1;
}
$arr = array(4,5,6,5,6,7,8,9,10,9);
echo FindNumberInArray($arr,10);
?>