摘要: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); 
                      ![[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ'](https://blog.yzmcms.com/uploads/thumbnail/20170331160032157.jpg) 
                       
                       
                       
                      