본문 바로가기
알고리즘 이론/이진 탐색

이진 탐색(binary search)

by bky373 2020. 10. 3.

이진탐색 : 주어진 목록을 둘로 나누어 원하는 데이터를 탐색하는 기법

* 이진 탐색은 정렬되어 있는 리스트에서 수행 가능하다! 
* 시간 복잡도: 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

댓글