顺序查询和二分查询用法

一、查找的方法

顺序查找 、二分查找

二、顺序查找:

    对某个数组,按照顺序,一个一个比较,找到你要的数据。

三、顺序查找的案例:

<?php 
header('content-type:text/html;charset=utf8');
function SeqSearch($arr,$num)  //定义一个顺序查询的方法
{
    foreach ($arr as $k => $v) {  
        if ($v == $num) {   //若数组中存在待查询的值$arr
            return $k;     //返回查询到的数的下标
        }         
    }
     echo "查询无结果";   //没有查到返回“查询无结果”
}
 $arr=[1,2,5,7,9,8,6,4]; //要查询的数组
 $num=5;  //待查询的数
 echo SeqSearch($arr,$num)."<br>";

 ?>

四、二分查找:

      首先找到数组中间这个数,然后与要查找的数比较,如果要查找的数大于中间这个数,则说明应该向后找,否则向前找,如果想等,则说明找到。
前提:该数组必须是有序数列,如果该数组无序,必须先排序后查找

五、二分查找的示例

<?php 
//这仅仅是二分查找最为简单的一个实现
//定义一个二分递归查找方法
  function BinSearch($arr,$num,$low,$high)
  {
    if ($low <= $high) {
    $mid=floor(($low+$high)/2);  //中间数的下标
    if ($arr[$mid] == $num) {      //若中间数等于要查询的数,则返回中间数的下标
        return $mid;  
    }
    else if ($arr[$mid] < $num) {             
        return BinSearch($arr,$num,$mid+1,$high);  //若中间数小于要查询的数,中间数下标加1
    }
    else if ($arr[$mid] >$num)
    {
        return BinSearch($arr,$num,$low,$mid-1);  //若中间数大于要查询的数,中间数作为最大值下标减1
    }
    
     }
     else
    {
       return  "查不到,好无奈!";
    }
  }
  $arr=[1,2,3,4,5,6,7,8,9];  //待查找的数组
  $low=2;  //数组的开始位置
  $high=count($arr)-1;  //数组的最大位置
  $num=9;  //需要查找的数字
   echo BinSearch($arr,$num,$low,$high);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值