반응형
검색 범위를 줄여나가면서, 원하는 데이터를 찾는 전체 탐색 알고리즘이다.
시간복잡도는 \( log{2}^{N} \) 으로 매우 빠르다.
단점으로는 이미 정렬된 자료에 대해서만 사용할 수 있다.
예시) 16을 찾아보자.

1단계
left index: 0
right index: 14
mid index: (0 + 14) / 2 = 7
A[mid] 값이 찾고자 하는 값(17)보다 큰 지 작은지 확인한다. · · · · · · · · · · ①

① 결과에 따라 검색 범위를 조정한다.
만약 A[mid] 값이 찾고자 하는 값 보다 크다면, 찾고자 하는 값이 mid 보다 왼쪽에 있으므로,
right 값을 수정한다. (right = mid - 1)
만약 A[mid] 값이 찾고자 하는 값 보다 작다면, 찾고자 하는 값이 mid 보다 오른쪽에 있으므로,
left 값을 수정한다. (left = mid + 1)
2단계
left index: 0
right index: 6
mid index: (0 + 6) / 2 = 3

3단계
left index: 4
right index: 6
mid index: (4 + 6) / 2 = 5

4단계 (찾음)
left index: 6
right index: 6
mid index: (6 + 6) / 2 = 6

만약 검색 구간이 (left > right) 이면,
데이터를 찾지 못한 것이다. (검색 종료)
반응형
'Algorithm' 카테고리의 다른 글
| 탐욕 알고리즘 (Greedy algorithm) (0) | 2025.04.13 |
|---|---|
| 너비 우선 탐색 (BFS, Breadth First Search) (0) | 2025.01.27 |
| 최대공약수 구하기 (Binary Euclidean algorithm) (0) | 2025.01.11 |
| 최대공약수 구하기 (유클리드 호제법) (0) | 2025.01.11 |
| 인수분해 (에라토스테네스의 체) (0) | 2025.01.01 |