반응형
이진 탐색(혹은 이분 탐색)은 정렬된 배열에서 특정한 값을 찾는 알고리즘이다. 탐색 범위를 절반씩 줄여가며 빠르게 원하는 값을 찾아낼 수 있어 효율적이다. 이진 탐색의 기본적인 원리는 다음과 같다.
- 이분 탐색을 위해 오름차순 또는 내림차순으로 정렬된 배열을 준비
- 탐색 범위의 중간에 있는 값을 찾아서, 찾고자 하는 값과 비교
- 비교에서 범위를 좁힌다. (오름차순 기준)
3-1. 중간값이 찾고자 하는 값보다 크면 탐색 범위를 왼쪽 절반으로 좁힌다.
3-2. 중간값이 찾고자 하는 값보다 작으면 탐색 범위를 오른쪽 절반으로 좁힌다. - 3의 과정을 원하는 값을 찾을 때까지 반복
위 과정을 하나의 함수로 정리하면 다음과 같다.
def binary_search(arr, target):
left = 0
right = len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1 # 존재하지 않는 경우
반응형
'Python > CS' 카테고리의 다른 글
파이썬으로 백트래킹 구현하기 | backtracking (1) | 2024.12.31 |
---|---|
[알고리즘] 파이썬으로 피보나치 수열 구현하기 | 동적계획법(Dynamic Programming) 예시 (2) | 2024.10.21 |
[자료구조] 파이썬으로 세그먼트 트리 구현하기 | 구간합 구하기 (2) | 2024.10.15 |
[알고리즘] 파이썬으로 최소 신장 트리 구하기 | 크루스칼 알고리즘 (Kruskal's Algorithm) (1) | 2024.10.08 |
[알고리즘] 파이썬으로 팩토리얼이 아닌 동적계획법을 활용한 이항 계수 구현하기 | Binomial Coefficient, Dynamic Programming (0) | 2024.10.07 |