二分查詢中mid值的計算方法

2021-10-08 12:51:52 字數 399 閱讀 7349

今天在刷leetcode中用到了二分查詢,答案中給的是

int mid = (right - left)/2 + left;
我自己寫的是

int mid = (left + right) / 2;
測試結果是,我的沒通過,超時了,第一種則通過了,後來上網查了一下:

如果用mid=(left+right)/2,在執行二分查詢程式時可能溢位超時。

因為如果left和right相加超過int表示的最大範圍時就會溢位變為負數。

所以如果想避免溢位,不能使用mid=(left+right)/2,應該使用mid=left+(right-left)/2

不知道有沒有關係,總之以後用到二分查詢的話則使用第一種方式了

計算方法 C C 二分法求根

問題 給出方程f x x 3 10x 20,求該方程在 1,2 上的根,其精度不小於10 4 看似很簡單的乙個小問題,其實有很有細節值得注意,先給出 方法一 include include double f double x int main if cnt 0 r mid else l mid pr...

二分查詢及插值查詢

二分查詢和插值查詢都是基於減而治之的原理 1 細節 二分查詢的範圍的下標 lo和hi代表 lo,hi 因此,選擇mid的時候,兩部分是 lo,mid 和 mid 1,hi 插值查詢的含義類似於在字典中確定乙個字母的範圍,比如選擇b的話,會在較前的頁碼處查詢,這裡,字母相當於陣列的下標,而頁碼相當於要...

二分查詢與插值查詢

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。1 確定排序好的陣列的中間位置mid left right 2 left 0,right n 1 將陣列分為兩部分。2 用要t mid ...