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