在二分查找中,我们使用 mid = low + (high – low)/2
而不是 (low + high)/2
来避免溢出,但是,可以不是分别计算 low/2
和 high/2
然后将它们相加,而不是 low+(( high-low)/2)
?
附注如果low + (high – low)/2
效率更高,那么为什么会这样呢?
最佳答案
假设 low 和 high 都是 3;那么 middle = 3/2 + 3/2 = 1+1 = 2,这实际上是相当糟糕的。 :-)
我们不使用 middle=high/2+low/2 的原因是它给出了错误的结果
关于binary-search - 为什么我们使用中=低+(高-低)/2;但不是中=(低/2)+(高/2)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71368171/