PHP寫一個二分法查詢一個值在陣列中的位置
阿新 • • 發佈:2019-02-12
首先,用二分法的話陣列必須是一個有序的陣列,可以從大到小也可以從小到大,下邊我給的是陣列從小到大排列的方法: $arr = array(2,4,6,7,8,9,10,12,14,16,18); $low = 0; //要查詢範圍的最小鍵值 $search = 6; //要查詢的值 $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; } }