binary-search - 为什么我们使用中=低+(高-低)/2;但不是中=(低/2)+(高/2)?

标签 binary-search

在二分查找中,我们使用 mid = low + (high – low)/2 而不是 (low + high)/2 来避免溢出,但是,可以不是分别计算 low/2high/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/

相关文章:

java - 如何执行文本文件的二进制搜索

java - 二分查找平方根[作业]

algorithm - 二分查找终止条件

java - 查看数组是否包含给定范围内的数字

java - 如何使用二进制搜索算法找到最接近给定二进制键值的元素?

c - 二分查找中的结束索引

c - 二进制搜索递归无法正常运行

algorithm - 在具有重复元素的排序和旋转数组中查找最小数

c++ - 为二进制搜索排序对象 vector

c - 冒泡排序的二分查找