알고리즘/개념
이진 탐색 구현
purple
2021. 11. 28. 15:48
Q
‘이진 탐색(Binary Search)’ 알고리즘을 사용해서 어떤 원소가 리스트 안에 포함되어 있는지 확인하려고 합니다. 이진 탐색 알고리즘은 선형 탐색 알고리즘과 달리, 정렬된 리스트를 전제로 합니다. 정렬된 리스트가 아니면 이 알고리즘은 적용이 불가능합니다.
A
def binary_search(element, some_list):
start_index = 0
end_index = len(some_list) - 1 # 인덱스는 0부터 시작하기 때문에 -1
#반복문
while start_index <= end_index:
midpoint = (start_index + end_index) // 2 # //는 버림 나눗셈
if some_list[midpoint] == element: # 동일한 값이 나올 때까지 반복
return midpoint
elif element < some_list[midpoint]: # 반복문 조건의 조정
end_index = midpoint - 1
else:
start_index = midpoint + 1
return None
print(binary_search(2, [2, 3, 5, 7, 11]))
print(binary_search(0, [2, 3, 5, 7, 11]))
print(binary_search(5, [2, 3, 5, 7, 11]))
print(binary_search(3, [2, 3, 5, 7, 11]))
print(binary_search(11, [2, 3, 5, 7, 11]))
</> 실행 결과
0
None
2
1
4