Der folgende Pseudocode stammt aus einem TopCoder-Tutorial über binäre Suche
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
Warum berechnen wir den mittleren Wert als Mitte = lo + (hi - lo) / 2 ? Was stimmt nicht mit (hoch + niedrig) / 2
Ich habe die leise Vermutung, dass damit ein Überlauf verhindert werden soll, aber ich bin mir nicht sicher. Vielleicht kann mir jemand erklären, warum das so ist und ob es noch andere Gründe dafür gibt.