因此,mid
二进制搜索中正确的计算方式是mid = low + ((high - low) / 2)
为了处理溢出错误。
我的实现使用无符号的64位变量,而且我从未见过我的数组过大而导致溢出的情况。我仍然需要使用上述实现还是可以使用mid = (low + high) / 2
这里的最佳做法是什么?
如果没有溢出的可能性,那么从技术上讲,就不需要使用溢出安全的中点计算方法:可以根据需要使用不安全的公式。但是,如果您的程序有一天被修改而违反了您的假设,则无论如何都应将其保留在那里。我认为,添加一条CPU指令使您的代码永不过时,这是对代码可维护性的一项重大投资。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句