Tuỳ vào invariant bạn muốn duy trì.
left <= right (closed interval [left, right]):
- Vùng tìm kiếm bao gồm cả left và right
- Khi không match: left = mid + 1 hoặc right = mid - 1
- Vòng dừng khi left > right (vùng rỗng)
- Phù hợp khi tìm exact match
left < right (half-open [left, right)):
- right là exclusive — không nhìn nums[right]
- Khi không match: left = mid + 1 hoặc right = mid (không phải mid-1)
- Vòng dừng khi left === right
- Phù hợp khi tìm insertion point hoặc lower bound
Mẹo: chọn 1 style và stick. Mix là nguyên nhân số 1 gây off-by-one. Đa số code samples dùng <= cho exact match.