PHP 顺序查找、二分查找

12 篇文章 0 订阅

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)
?> 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值