欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PHP顺序查找和二分查找

程序员文章站 2024-03-17 15:56:34
...
<?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冒泡排序