PHP 顺序查找、二分查找
程序员文章站
2022-03-13 22:49:02
...
1、查找的方法:
顺序查找 、 二分法
2、顺序查找:
对某个数组,按照顺序,一个一个比较,找到你要的数据。
3、顺序查找实例:
<?php
//顺序查找数组中某个数
//如从一个数组中找到一个数:34
//$arr = array(23,45,67,34,9,34,6)如果查到则输出下标,否则输出查无此数
$arr = array(23,45,67,34,9,34,6);
//设一个标志位
$flag = false;
foreach($arr as $x => $x_val)
{
if ($x_val == 34)
{
echo 'arr['.$x.']=34'."<br>";
$flag = true;
}
}
if ($flag==false)
{
echo "查无此数!";
}
?>
4、二分查找:
首先找到数组中间这个数,然后与要查找的数比较,如果要查找的数大于中间这个数,则说明应该向后找,否则向前找,如果想等,则说明找到。
前提:该数组必须是有序数列,如果该数组无序,必须先排序后查找
<?php
//二分查找数组中某个数
//如从一个数组中找到一个数:134
//$arr = array(23,45,67,89,90,134,236)如果查到则输出下标,否则输出查无此数
function binarySearch(&$arr,$val,$leftindex,$rightindex)
{
if($rightindex < $leftindex)
{
echo "查无此数!";
return 0;
}
//四舍五入取整数值
$middleindex = round(($leftindex + $rightindex)/2);
if($val > $arr[$middleindex])
{
binarySearch($arr,$val,$middleindex + 1,$rightindex);
}
elseif($val < $arr[$middleindex])
{
binarySearch($arr,$val,$leftindex,$middleindex - 1);
}
else
{
echo 'arr['."$middleindex".']=134'."<br>";
}
}
$arr = array(23,45,67,89,90,134,236);
// $leftindex = 0;左下标
// $rightindex = count($arr)-1;右下标
// $val = 134;要找的值
binarySearch($arr,134,0,count($arr) - 1)
?>
上一篇: ubuntu隐藏index.php的方法
下一篇: php中&&和||的区别是什么