以下是我从TopCoder关于二进制搜索的教程中得到的伪代码
binary_search(A, target):
lo = 1, hi = size(A)
while lo <= hi:
mid = lo + (hi-lo)/2
if A[mid] == target:
return mid
else if A[mid] < target:
lo = mid+1
else:
hi = mid-1
// target was not found
Run Code Online (Sandbox Code Playgroud)
为什么我们计算中间值为mid = lo +(hi-lo)/ 2?(hi + lo)/ 2错了
我有一点想法,可能是为了防止溢出,但我不确定,也许有人可以向我解释,如果还有其他原因.