재귀함수를 통한 이진탐색

JSK·2022년 7월 31일
0

파이썬 공부방

목록 보기
3/5

정렬이 되어있는 배열을 탐색하는 함수입니다. 재귀함수를 이용한 이진탐색으로 찾는 수가 있으면 "값이 있습니다"를 출력하고 없을 경우 "값이 없습니다"를 출력합니다.

작동원리

  1. 배열과 찾을 값을 입력받습니다.

  2. 배열의 중간값과 찾을 값을 비교한다.

  3. 두 값이 같을 경우 "값이 있습니다"를 출력하고 중간값이 찾을 값보다 큰 경우 중간이전까지로 중간값이 더 작은 경우 중간이후까지로 구간을 변경하여 1번부터 반복합니다.

  4. 만약 구간이 1밖에 남지 않았는데 값을 찾지 못한 경우 "값이 없습니다"를 출력합니다.

소스코드

def bs(array, num):
    value = array[int(len(array) / 2)]
    if len(array) == 1 and value != num:
        print("값이 없습니다.")
        return 0
    if value == num:
        print("값이 있습니다.")
        return 0
    else:
        if value > num:
            bs(array[0:int(len(array)/2)], num)
        else:
            bs(array[int(len(array)/2):len(array)+1], num)
profile
학사지만 AI하고 싶어요...

0개의 댓글