제로베이스/알고리즘

Algorithms. 이진 검색 예시

진주네카라 2021. 11. 12. 11:50
728x90

 

 

recursive binary search

재귀 함수를 사용한 이진 검색을 해봅니다.

 

 

 

 


 

 

예시

 

1 리스트를 오름차순으로 정렬하여 '7'를 검색하고 위치(인덱스) 출력하기

 

nums = [4, 21, 10, 5, 0, 17, 7, 25, 11, 50, 49]

def binarySearch(arr, sta, end, key):
    arr.sort()
    if end >= sta:

        mid = sta + (end - sta) // 2

        if key == arr[mid]:
            return mid

        elif key < arr[mid]:
            return binarySearch(arr, sta, mid - 1, key)

        else:
            return binarySearch(arr, mid + 1, end, key)

    else:
        return -1

print(nums) # 정렬 전
print(binarySearch(nums, 0, len(nums) - 1, 7))
print(nums) # 정렬 후

 

[4, 21, 10, 5, 0, 17, 7, 25, 11, 50, 49]
3
[0, 4, 5, 7, 10, 11, 17, 21, 25, 49, 50]

 

 

 

 

 

 

 


예시

 

 

도움

728x90