摘要: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);