不應該使用middle=(left+right)/2這種情況,否則對於大資料來說會產生溢位問題。切記!值不同的時候,left相對middle應該+1,不要直接用middle進行賦值。
#include
#include
using namespace std;
//下面乙個移位是一樣的,>>相當於除去2,主要是要用right-left,否則對於大資料來說會產生溢位問題。切記
int binarysearch(int arr,int len,int number)
else}}
int main()
// else if(array[middle]//
// else
// return middle;
// //可能會有讀者認為剛開始時就要判斷相等,但畢竟陣列中不相等的情況更多
// //如果每次迴圈都判斷一下是否相等,將耗費時間
// }
// return -1;
//}
二分查詢需要注意的幾點及優化
我們都已經很清楚普通的二分查詢演算法的寫法 1.處理無效輸入的時候 bool isinvalidinput false 可以用作訊號量處理 int binaryserach int array,int n,int key isinvalidinput false 區分 1表示的意思是無效輸入還是沒找...
把二分查詢演算法寫正確需要注意的地方
今天再次解決乙個需要使用二分查詢的問題,再一次的,我又沒有一次過寫對.為什麼我說 又 抓狂了,似乎開始有一些 二分查詢恐懼症 為了以後能夠一次將這個基本的演算法寫對,我決定再仔細研究一下.我之前有寫過乙個二分查詢的演算法,在 這裡,這一次再以這個問題為例來說明.我今早寫下的錯誤 類似於下面的樣子 i...
沒有bug二分查詢
在電腦科學中,二分查詢 英語 binary search 也稱折半搜尋 英語 half interval search 對數搜尋 英語 logarithmic search 是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程結束 ...