摸坑(二分法)

2021-10-05 22:22:58 字數 555 閱讀 3988

最近發現二分法做題時候經常出現錯誤,總是在細節方面做得不是很好,一直出錯,總是wrong answer。決定總結一下二分法。

防止溢位

取中位數時候要防止在運算過程**現溢位情況。

例如說:int的取值範圍為(-2147483648\——2147483647),占用4個位元組(-2~31 \——2^31 -1)。你要在100——2^31-1之間用二分法進行查詢。

int mid =(left+right)/2;

這樣的話(left+right)>2^31-1 ,會在運算中溢位,從而使答案錯誤。

(r-l) / 2+l;

邊界條件的判斷

while(condition) 中condition的具體表達形式,是left驗證(一定要做)

判斷只剩下兩個值的時候,要取的值在left和right的結果是否題目預想的一樣。然後進行測試提交

常見兩種:

一:

while (l < r)

二:while (l <= r)

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

二分法,二分搜尋

二分法是乙個應用很廣泛的演算法 好吧,剛說出這句話的時候,我查了一下資料,發現我了解的應用寥寥無幾.ok,既然不知道,那就下次補充把。咱們直接進入主題。二分法 bisection method 是一種方程式根的近似值求法。演算法 若要求已知函式f x 0的值則 1.先找出乙個區間 a,b 使得f a...