이진탐색 : 주어진 목록을 둘로 나누어 원하는 데이터를 탐색하는 기법
* 이진 탐색은 정렬되어 있는 리스트에서 수행 가능하다!
* 시간 복잡도: O(log n)
def binary_search(data, search):
if len(data) == 1 and search == data[0]:
return True
if len(data) == 1 and search != data[0]:
return False
if len(data) == 0:
return False
mid = len(data) // 2
if search == data[mid]:
return True
else:
if search > data[mid]:
return binary_search(data[mid:], search)
else:
return binary_search(data[:mid], search)
data = [1,5,4,3,2]
data.sort()
print(data) # [1, 2, 3, 4, 5]
print(binary_search(data, 2)) # True
print(binary_search(data, 10)) # False
댓글