PHP基础之查找算法

一、查找算法含义

查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是最常用的基本运算。查找算法的含义是实现查找过程对应的代码结。就是在大型数组中快速定位想要的元素。

二、顺序查找算法

定义:顺序查找算法也成为线性查找,从数据结构线形表的一端开始,顺序扫描,一次将扫描到的结点,关键字与给定的值k进行比较。若相等表示查找成功,若扫描结束且没有找到关键字等于k的结点,表示查找失败。

   <?php
    header("content-type:text/html;charset=utf-8");
        $arr=array(1,2,3,4,5,7);
        //顺序查找,从数组第一个函数开始依次匹配
        function check_order($arr,$num){
        	//全部匹配
        	for($i=0,$len=count($arr);$i<$len;$i++){
        		//判断
        		if($arr[$i]==$num){
        			return $i;
        		}
        	}
        	return false;
        }
        var_dump(check_order($arr,5));
  输出
  ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181225134126969.png)
      
        

## 三、二分法查找算法
二分查找要求线形表中的结点按关键字值的升序或降序排列,用给定值k先于中间结点的关键字比较,中间结点把线形表分成2个子表,若相等则查找成功,若不相等,再根据k与该中间的结点关键字的比较结果确定下一步查找哪个字表,这样递归进行,直达找到,或者发现表中无这样的结点。
折半算法的思路:
1.计算数组的长度
2.确定左右2边的指针位置
3.找到中间位置
4.匹配
5.根据大小重定边界。
<?php
header("content-type:text/html;charset=utf-8");
	//二分法查找算法
    $arr=array(1,2,3,4,5,7);
    //得到数组边界
    $res=3;
    function check_break($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_break($arr,$res));

输出
float(3)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值