查找算法:
在大量的信息中寻找一个特定的信息元素
顺序查找算法:
从数组第一个元素开始,挨个匹配
<?php
function check_order($arr,$num){
//全部匹配
for($i=0,$len=$count($arr); $i<$len; $i++){
//判断
if($arr[$i] == $num){
return $i;
}
}
return false;
}
二分查找算法:
折半算法,先找到中间节点,用K与中间节点的关键词比较,中间节点把线性表分为两个子表,直到查找到或查找结束。
1、计算数组长度;
2、确定左右两边的指针位置;
3、找到中间位置;
4、匹配;
5、根据大小重定边界
<?php
$arr = array(1,3,7,9,65,9847,46544);
function check($arr,$res)
{
$right = count($arr);
$left = 0;
//匹配循环
while ($left <= $right) {
//得到中间位置
$middle = floor(($right + $left) / 2);
//匹配数据
if ($arr[$middle] == $res) {
return $middle+1;
}
//没有找到
if ($arr[$middle] < $res) {
$left = $middle + 1;
} else {
$right = $middle - 1;
}
}
return false;
}
var_dump(check($arr,3));
使用递归实现: