Tips!一個二分查找要注意的東西?

二分查找的方法想必你們都耳熟能詳,今天想說一下咱們在寫代碼的時候比較容易忽略的小細節。
int mid = (low + high)/2;
int mid = low/2 + high/2;
int mid = low + (high - low)/2;
能夠想一下這三種方式有什麼不一樣?
首先看第一個:
這裏面隱藏了一個可能出現的問題就是, 當咱們的low和high比較大時,兩者相加可能已經超過int的取值範圍了,由於這種寫法並非一個好的寫法。
其次:
這種寫法更不可取了,舉個例子吧:low = 3,high = 5。那麼mid應爲4,可是用上面這種寫法以後mid可就大錯特錯了。
所以,咱們日常寫的時候應該儘可能使用第三種寫法,並且這種寫法的形式和插值查找的mid比較類似。code

相關文章
相關標籤/搜索