Ниже приводится псевдокод, который я получил из учебника 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
Почему мы вычисляем среднее значение значение как mid = lo + (hi - lo) / 2 ? Что не так с (привет + lo) / 2
У меня есть небольшое предположение, что это может быть для предотвращения переполнения, но я не уверен, возможно, кто-нибудь сможет мне это объяснить, и если есть другие причины .