value_at_midpoint는 범위 내 중간 지점에 있는 항목이다.
value_at_midpoint가 찾고 있던 search_value이면 대성공이고 그럼 search_value를 찾은 인덱스를 반환할 수 있다.
if search_value == value_at_midpoint
return midpoint
search_value가 value_at_midpoint보다 작으면 search_value를 그 앞부분에서만 찾을 수 있다는 뜻이다. search_value는 value_at_midpoint보다 뒤에 있을리 없으니 이제 upper_bound에 midpoint의 바로 왼쪽 인덱스를 할당해 검색 범위를 좁힐 수 있다.
elsif search_value < value_at_midpoint
upper_bound = midpoint - 1
반대로 search_value가 value_at_midpoint보다 크면 search_value를 midpoint의 오른편에서만 찾을 수 있다는 뜻이니 lower_bound를 적절히 증가시킨다.
elsif search_value > value_at_midpoint
lower_bound = midpoint + 1
범위가 원소 0개로 좁혀지면 nil을 반환한다. search_value가 배열에 없다고 확실히 말할 수 있다.