Posts Tagged ‘查找’

PHP查找(算法)

1顺序查找(算法)

//$n为待查找的数组元素的个数,$k为待查找的元素
function seq_sch($array, $n, $k)
{
    $array[$n] = $k;
    for($i=0; $i<$n; $i++)
    {
        if($array[$i]==$k)
        {
    return true;
            break;
        }
    }
    if ($i<$n)   //判断是否到数组的末尾
    {
        return $i;
    }
    else
    {
        return false;
    }
}
$array = array(3, 6, 1, 9, 2, 10);
$n = count($array);
$k = 8;
if(seq_sch($array, $n, $k))
{
echo "顺序查找成功";
}
else
{
echo "顺序查找失败";
}

2.实现二分查找(折半查找)算法

二分查找又称折半查找,它是一种效率较高的查找方法。
【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。

//$k为要查找的关键字(注:待查找的数组元素为奇数个)
function bin_sch($array, $low, $high, $k)
{
    if ($low <= $high)
    {
        $mid = intval(($low+$high)/2);
        if ($array[$mid] == $k)
        {
            return true;
        }
        elseif ($k < $array[$mid])
        {
            return bin_sch($array, $low, $mid-1, $k);
        }
        else
        {
            return bin_sch($array, $mid+1, $high, $k);
        }
    }
    return false;
}
$array = array(1, 2, 4, 6, 8);
$low = min(1, 2, 4, 6, 8);
$high = max(1, 2, 4, 6, 8);
$k = 7;
if(bin_sch($array, $low, $high, $k))
{
echo "二分查找成功";
}
else{
echo "二分查找失败";
}