PHP中的查找算法

查找算法:

在大量的信息中寻找一个特定的信息元素

 

顺序查找算法:

从数组第一个元素开始,挨个匹配

<?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));

 

使用递归实现:

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值