kjp0411 님의 블로그
탐색 - 이진 탐색 본문
이진 탐색
- 데이터가 정렬돼 있는 상태에서 원하는 값을 찾아내는 알고리즘입니다.
- 대상 데이터의 중앙값과 찾고자 하는 값을 비교해 데이터의 크기를 절반씩 줄이면서 대상을 찾습니다.
- 정렬 데이터에서 원하는 데이터를 탐색할 때 사용하는 가장 일반적인 알고리즘입니다.
| 기능 | 특징 | 시간 복잡도 |
| 타깃 데이터 검색 | 중앙값 비교를 이용한 대상 축소 방식 | O(logN) |
이진 탐색의 핵심 이론
이진 탐색은 오름차순으로 정렬된 데이터에서 다음 4가지 과정을 반복합니다.
※ 내림차순이라면 조건을 반대로 하여 과정을 반복하면 됩니다.
이진 탐색 과정
- 현재 데이터셋의 중앙값을 선택합니다.
- 중앙값 > 타깃 데이터일 때 중앙값 기준으로 왼쪽 데이터셋을 선택합니다.
- 중앙값 < 타깃 데이터일 때 중앙값 기준으로 오른쪽 데이터셋을 선택합니다.
- 과정 1 ~ 3을 반복하다가 중앙값 == 타깃 데이터일 때 탐색을 종료합니다.
이렇게 이진 탐색을 사용하면 예를 들어 16개의 데이터가 있을 때 최대 4번의 연산으로 원하는 데이터의 위치를 찾을 수 있습니다.
다만 이진 탐색은 꼭 데이터가 정렬되어 있어야 합니다.
'Coding Test > Python' 카테고리의 다른 글
| 정수론 - 소수 구하기, 오일러 피 (0) | 2025.09.19 |
|---|---|
| 그리디 - 그리디 알고리즘 (0) | 2025.09.18 |
| 탐색 - 너비 우선 탐색 (0) | 2025.09.16 |
| 탐색 - 깊이 우선 탐색, 백트래킹 (0) | 2025.09.15 |
| 자료구조 - 병합 정렬, 기수 정렬 (0) | 2025.09.14 |
