二分查詢原理很簡單,但是往往我們開始敲**的時候,會遇到一些小問題,不過每個人處理的方式不一樣,我這裡僅供參考。
template t binarysearch(t *num,int
len,t e )
cout<<"can't find this element"
<0;
}int main();
int p = binarysearch(a,len,7);
cout<0;
}
執行結果
5 但是當我尋找10的時候,即int p = binarysearch(a,len,10)
執行結果
can』t find this element
0 這就出現問題了。
究其原因,是因為每一次把left和right的範圍縮小之後,我們是摒棄掉了已經比較過的num[middle],所以新的left需要middle+1,新的right需要middle-1,而最後,能夠return 正確的middle的時候,必定是left = right的時候,所以**這樣改之後,不會出錯了
template
t binarysearch(t *num,int len,t e )
cout
<<"can't find this element"
int main();
int p = binarysearch(a,len,10);
cout
0;}
執行結果
6
查詢問題 二分查詢
首先,查詢的方式有很多種方法,比如 二分查詢,順序查詢,斐波那契查詢,插值查詢,但是基本都是基於二分查詢的思想。接下來說一下二分的基本實現方法。二分查詢的思想其實很簡單,就是不斷地將你所要查詢的數字和你所查詢的陣列中的最中間的數字比較,如果比陣列中的中間的數字大,則將該陣列中的前面的所有的數字全部忽...
二分查詢問題
常見的二分查詢問題 1 給定排序陣列求乙個給定數在陣列中的下標,如果不存在就返回應該插入的位置 int searchinsert int a,int n,int target else return start 2 給定乙個 排序陣列,然後經過旋轉後,查詢給定值是否在陣列中。思路 1 先看左邊有序還...
二分查詢問題
二分查詢 要注意 1.迴圈判斷條件應該是 low high,否則在key值剛好等於某一次迴圈的high或者low時無法執行.2.middle low high low 2 防止溢位 3.根據問題要求選擇邊界值的改變方式 因為迴圈條件,最後會出現low和high在key的兩邊,且有關係low high...