바이너리 서치란?
- 정렬 된 자료를 반으로 나누어 계속하여 탐색하는 방법
- 정렬 할 자료는 오름차순 이어야 함
- 퍼포먼스가 좋음
구현시 필요한 변수
target : 찾고자 하는 목표 값
data : 오름차순으로 정렬 된 list (찾을 위치)
start : data의 처음 값 index
end : data의 마지막 값 index
mid : start - end 의 중간 값
구현 (재귀)
def bin_search(data, target, start, end):
idx = (start + end) // 2
mid = data[idx]
if target == mid:
print(f'idx: {idx}')
return
elif mid > target:
bin_search(data, target, start, idx-1)
elif mid < target:
bin_search(data, target, idx+1, end)
else:
return
target = 25
data = [30, 94, 27, 92, 21, 37, 25, 47, 25, 53, 98, 19, 32, 32, 7]
length = len(data)
data.sort()
start = 0
end = length-1
print(data)
bin_search(data,target,0,end)
idx = 3
Reference
'Programing > 자료구조, Algorithm' 카테고리의 다른 글
programmers 추석트래픽 [python] (0) | 2022.03.15 |
---|---|
programmers -프렌즈4블록- (python) (0) | 2022.03.14 |
프로그래머스(programmers) 신고 결과 받기 -python- (0) | 2022.03.10 |
백준 1700 반례 (python) (0) | 2022.02.17 |
백준 1062 (python) (0) | 2022.02.16 |