php二分查找、顺序查找算法

袁志蒙 3837次浏览

摘要:php查找数组元素有内置的函数array_search和in_array,顺序查找对数组排序没有要求,二分查找法要求数组必须是一个有序数组!1.顺序查找function sequence_search...

php查找数组元素有内置的函数array_search和in_array,顺序查找对数组排序没有要求,二分查找法要求数组必须是一个有序数组!

1.顺序查找

function sequence_search($arr, $k){
	foreach($arr as $key=>$val){
		if($val==$k){
			return $key;
		}
	}
	return -1;
}

2.二分查找

思路分析:找到数组中间数,然后与要查找的数比较,如果要查找的数大于中间数,则说明要向后查找,否则向前查找,如果相等则说明已找到。

function binary_search($arr,$val,$left,$right){
	if($left > $right){
		return -1;
	}
	$middle = round(($left+$right)/2);
	if($arr[$middle]>$val){
		return binary_search($arr, $val, $left, $middle-1);
	}elseif($arr[$middle]<$val){
		return binary_search($arr, $val, $middle+1, $right);
	}else{
		return $middle;
	}
	
}

//定义被查找的数组(有序数组)
$arr = array(-3,-1,0,1,3,5,7);

//要查找的值
$val = 5;

echo  binary_search($arr, $val, 0, count($arr)-1);


随机内容

表情

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~