Расчет среднего значения двоичного поиска

Ниже приводится псевдокод, который я получил из учебника 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

У меня есть небольшое предположение, что это может быть для предотвращения переполнения, но я не уверен, возможно, кто-нибудь сможет мне это объяснить, и если есть другие причины .

20
задан binsearch 26 December 2010 в 15:29
поделиться