PHP顺序查找和二分查找

<?php
// 顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
/**
 * 顺序查找
 * @param array $arr 数组
 * @param mixed $k 要查找的元素
 * @return mixed 成功返回数组下标,失败返回-1
 */
function seq_sch($arr,$k){
    for ($i=0,$n = count($arr); $i < $n; $i++) {
        if ($arr[$i] == $k) {
            break;
        }
    }
    if($i < $n){
        return $i;
    }else{
        return -1;
    }
}

/**
 * 二分查找,要求数组已经排好顺序
 * @param  array $array 数组
 * @param  int $low   数组起始元素下标
 * @param  int $high  数组末尾元素下标
 * @param  mixed $k   要查找的元素
 * @return mixed      成功时返回数组下标,失败返回-1
 */
function bin_sch($array,$low,$high,$k){
    if ($low <= $high) {
        $mid = intval(($low + $high) / 2);
        if ($array[$mid] == $k) {
            return $mid;
        } elseif ($k < $array[$mid]) {
            return bin_sch($array,$low,$mid - 1,$k);
        } else{
            return bin_sch($array,$mid + 1,$high,$k);
        }
    }
    return -1;
}

// 顺序查找
$arr1 = array(9,15,34,76,25,5,47,55);
echo seq_sch($arr1,47).PHP_EOL; // 结果为6

// 二分查找
$arr2 = array(5,9,15,25,34,47,55,76);
echo bin_sch($arr2,0,7,47).PHP_EOL; // 结果为5

相关推荐:
PHP顺序查找算法   PHP二分查找算法   PHP快速排序算法   PHP快速排序   PHP冒泡排序

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值