이진탐색은 반드시 정렬된 배열에서만 사용 가능한 점에 주의하자.
이진탐색은 순차 검색이며 시간복잡도는 O(log N)이다.
다음은 파이썬으로 구현한 코드이다.
# arr : 정렬된 리스트
# target: 찾고자 하는 값
# start : 배열의 처음
# end : 배열의 마지막
# binary_serach 함수의 반환값 : target의 인덱스
def binary_search(arr, target, start, end):
if start > end:
return None
mid = (start + end ) // 2
if arr[mid] == target:
return mid
elif arr[mid] > target:
end = mid - 1
else:
start = mid + 1
return binary_search(arr, target, start, end)
arr.sort() # 리스트가 정렬되지 않았을 경우
binary_search(arr, target, 0, len(arr))
728x90
'Algorithm' 카테고리의 다른 글
[CS] 메모이제이션(memoization) (0) | 2024.11.29 |
---|---|
파라메트릭 서치(Parametric Search)와 이진탐색(Binary Search) (0) | 2024.10.14 |
브루트 포스(brute force) 알고리즘 (1) | 2024.09.24 |
최대공약수(GCD) 구하기 - 유클리드 호제법 (2) | 2024.09.20 |
비트마스킹 (4) | 2024.09.16 |