티스토리 뷰
### 이진 탐색 ###
: 데이터가 '정렬'된 상태에서 데이터를 반으로 나눠가며 특정 값을 찾는 방법
< 조건 >
: 정렬된 데이터
< 시간 복잡도 >
O(logn)
< 풀이 >
: 시작점(start), 끝점(end), 중간점(mid)를 가지고 범위를 좁혀가며 값을 찾는다.
<예시 코드>
data = [1,2,3,4,5,6,7,8,9,10]
target = 2
start = 1
end = 10
# 반복 사용
def binarySearch(start, end, target):
while (start >= end):
mid = (start+end) // 2
if (data[mid] == target):
return mid
elif (data[mid] < target):
start = mid + 1
else:
end = mid + 1
binarySearch(start, end, target)
#재귀 사용
def binarySearch2(start, end, target):
if start > end:
return None
mid = (start + end) // 2
if (data[mid] == target):
return mid
elif (data[mid] < target):
return binarySearch2(mid + 1, end, target)
else:
return binarySearch2(start, mid - 1, target)
반응형
'알고리즘' 카테고리의 다른 글
점근적 표기 (0) | 2021.03.10 |
---|---|
DP - 가장 긴 증가하는 부분수열 (0) | 2020.10.29 |
파라메트릭 서치(Parametric Search) (0) | 2020.10.16 |
소인수 분해 (0) | 2020.08.27 |
소수 (0) | 2020.08.27 |
공지사항
최근에 올라온 글