더북(TheBook)

value_at_midpoint는 범위 내 중간 지점에 있는 항목이다.

value_at_midpoint가 찾고 있던 search_value이면 대성공이고 그럼 search_value를 찾은 인덱스를 반환할 수 있다.

if search_value == value_at_midpoint
    return midpoint

search_valuevalue_at_midpoint보다 작으면 search_value를 그 앞부분에서만 찾을 수 있다는 뜻이다. search_valuevalue_at_midpoint보다 뒤에 있을리 없으니 이제 upper_boundmidpoint의 바로 왼쪽 인덱스를 할당해 검색 범위를 좁힐 수 있다.

elsif search_value < value_at_midpoint
upper_bound = midpoint - 1

반대로 search_valuevalue_at_midpoint보다 크면 search_valuemidpoint의 오른편에서만 찾을 수 있다는 뜻이니 lower_bound를 적절히 증가시킨다.

elsif search_value > value_at_midpoint
    lower_bound = midpoint + 1

범위가 원소 0개로 좁혀지면 nil을 반환한다. search_value가 배열에 없다고 확실히 말할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.