728x90
반응형

이진 탐색 알고리즘은 정렬된 배열에서 반으로 쪼개가며 숫자를 찾는 알고리즘이다.

 

과정을 살펴보자.

 

찾고자 하는 수를 target 라 두고 배열의 중간 인덱스 값을 mid 라고 두자.

 

1. target 은 arr[mid] 보다 큰가?

2. target 은 arr[mid] 보다 작은가?

3. target 은 arr[mid] 와 같은가?

 

1인 경우 mid 의 오른쪽 부분을, 2인 경우 mid 의 왼쪽 부분을, 3인 경우 return 하면 된다.

 

재귀를 배웠으니 재귀를 활용하여 구현해보자.

 

def BinarySearch(arr,target,left,right):
    mid = (left + right)//2
    if target<arr[mid]:
        return BinarySearch(arr,target,left,mid-1)
    elif target>arr[mid]:
        return BinarySearch(arr,target,mid+1,right)
    elif target == arr[mid]:
        return True # 값이 존재한다.
    else:
        return False  # 값이 존재하지 않는다.

 

간단하게 구현 가능하다.

728x90
반응형

+ Recent posts