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
'제로베이스 > 알고리즘' 카테고리의 다른 글
Algorithms. 버블정렬 (1) | 2021.11.30 |
---|---|
Algorithms. 순위 (0) | 2021.11.29 |
Algorithms. 이진 검색 (0) | 2021.11.10 |
Algorithms. 선형 검색 예시 (0) | 2021.11.09 |
Algorithms. 선형 검색 (0) | 2021.11.05 |