- 정렬된 원소 리스트에서 시작한다.
- 리스트에 원하는 원소가 있으면 그 원소의 위치를 반환하고, 아니면 null 값을 반환한다.
- 매 번 남은 숫자 중의 가운데 숫자를 말하고, 대답에 따라 그 보다 큰 숫자 혹은 작은 숫자들을 한 번에 없앤다.
- n개의 원소를 가진 리스트에서 이진탐색을 이용하면 최대 $ log_2n$ 번 만에 대답을 찾을 수 있다.
low = 0
high = len(list) -1
mid = (low + high) // 2
guess = list[mid]
# 추측한 값이 작을 때
if guess < item :
low = mid + 1
# 추측한 값이 너무 클 때
if guess > item :
high = mid - 1
알고리즘의 속도는 빅오 표기법에 의해서 O(연산횟수)로 표기할 수 있는데 여기서 중요한 점은 괄호 안의 숫자가 시간이 아니라, 연산횟수가 어떻게 증가하는지에 따라 달리진다는 점이다. (입력 데이터의 크기에 비례하여 달라짐.)
따라서 이를 통해 입력 데이터의 크기가 늘어날 때 알고리즘의 실행 속도가 얼마나 증가하는지를 알 수 있다.
'알고리즘과 자료구조 > 이론?' 카테고리의 다른 글
유클리드 호제법 - 최대공약수와 최소공배수 (1) | 2024.01.11 |
---|