- 二分法查找一個值在數組中的位置 --小明同學
- 這個查找方法是需要一些邏輯性的,不多說了,下面直接上代碼實例
- 首先,用二分法的話數組必須是一個有序的數組,可以從大到小也可以從小到大,下邊我給的是數組從小到大排列的方法:
- $arr = array(2,4,8,9,10,12,14,16,18,22,36,46,54);
- $low = 0; //要查找範圍的最小鍵值
- $search = 22; //要查找的值
- $high = count($arr)-1; //計算出數組的長度
- while($low <= $high){ //取得數組的中間鍵值
- $mid = intval(($low+$high)/2);
- if($arr[$mid]==$search){ //如果取出中間的下標值跟你要搜索的值相等的話,直接去除值得下標就行
- echo "你要查找的值在數組內的下標爲".$mid; break;
- }else if($arr[$mid] > $search){
- $high = $mid -1;
- }else{
- $high = $mid+1;
- }
- }
這樣就可以直接獲取到要查找的值所在的下標位置了.