PHP基础之查找

前言

之前的文章介绍了PHP的运算符、流程控制、函数、排序等。有兴趣可以去看看。
PHP入门之类型与运算符
PHP入门之流程控制
PHP入门之函数
PHP入门之数组
PHP基础之排序
下面简单介绍一下查找,常用的查找有顺序查找、二分查找。

顺序查找

思想:
对某个数组,按照顺序,一个一个比较,然后找到你想要的数据。
代码案例:


输出结果为:
找到了,下标为=2

二分查找

注意:
想使用二分查找有一个重要的前提,那就是数组必须是有序的,如果无序,需要先排序,再查找。
思想:
先找到这个数组的中间那个数,如果大于中间这个数,那就向后查找,如果小于中间这个数,那就向前查找。如果相等,那说明找到了。
代码案例:

$rightindex){
        echo '没找到';
        return;
    }
    #找到中间那个数
    $middleindex=round(($leftindex+$rightindex)/2);  #round是四舍五入取整
    #如果大于中间的,向后找。
    if ($findval>$myarr[$middleindex]){
        binarySearch($myarr,$findval,$middleindex+1,$rightindex);
        #如果小于中间的向前找
    }elseif ($findval<$myarr[$middleindex]){
        binarySearch($myarr,$findval,$leftindex,$middleindex-1);
    }else{
        echo "找到了,下标=$middleindex";
    }
}

binarySearch($myarr,4,0,6);
echo '
'; print_r($myarr); ?>

输出结果:
找到了,下标=1
Array ( [0] => 1 [1] => 4 [2] => 6 [3] => 15 [4] => 18 [5] => 57 )

案例

咱们了解了数组,排序,查找,做一个小练习吧。
要求:
现在有六个裁判对比赛进行打分,要求由用户输入裁判分数,并打印出来,去掉一个最高分和一个最低分,求出比赛的平均成绩。并找到打出最低分和最高分的裁判打印出来。
现在我们先做用户的输入界面,用一个表单就可以了。由于是本地,我就提交到了aipan02.php中。aipan02.php里面写核心代码。用户输入代码如下:



    

输入裁判打分的数据,空格隔开

请输入:

接下来思考,如何找到打出最低分和最高分的裁判。当我们假设数组的第一个就是最低或者最高的,然后遍历数组,依次与第一个进行比较,符合判断就交换元素和下标。这样是不是就可以找到了呢,咱们用代码说明。

$arr[$i]){
            $minsum=$arr[$i];
            $minindex=$i;
        }
    }
    return $minindex;
}
function dafen02 ($arr){
    $maxsum=$arr[0];
    $maxindex=0;
    for ($i=0;$i';
echo "下标为".$maxindex."打的分数最高为".$arr[$maxindex];
echo '
'; echo "**********************".'
'; #遍历数组并求平均值 $sums=0; for ($i=0;$i'; if ($i!=$minindex && $i!=$maxindex){ $sums+=$arr[$i]; } } echo '
'; echo "除去最高分和最低分的平均值为".$sums/(count($arr)-2); ?>

下面我们用用户输入:88 90 60 78 100 93
执行后的效果如下图:
PHP基础之查找_第1张图片

小结

上面就是关于查找的一下内容,希望对大家有所帮助。

你可能感兴趣的:(PHP基础之查找)