따라서 리스트 중간에서 요소를 선택한다면, 비교한 후에 적어도 리스트의 절반을 삭제할 수 있음이 보장된다. 나머지 절반에도 같은 논리를 적용하여 그 중간 지점을 선택하고 이런 식으로 계속하면 된다. 즉, 항목 8개가 정렬된 배열에서 항목이 있는지 확인하려면 최대 3번만 비교하면 된다. 더 중요한 것은 항목이 1,000개인 배열에 어떤 숫자가 어디에 있는지 확인하기 위해서도 최대 10번 정도만 비교하면 된다는 점이다. 절반으로 나눴을 때 얻는 이점이다. 코드 2-1처럼 구현할 수 있다. 중간 지점을 반복해서 찾고, 나머지 절반은 우리가 찾는 값이 그 안에 어떻게 포함되느냐에 따라 삭제한다. (start + end)v / 2와 같이 간단히 표현할 수도 있지만, 여기에서는 좀 더 길고 정교한 형태로 작성했다. start + end는 시작과 끝에 큰 값이 오면 오버플로가 일어나 중간 지점을 잘못 찾을 수 있기 때문이다. 다음 코드처럼 작성하면 오버플로 현상을 피할 수 있다.