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

相关文章
相关标签/搜索