이분 탐색으로 20을 찾는 경우
lst = [2, 4, 7, 8, 11, 19, 20, 23]
key = 20
start = 0
end = len(lst) - 1
while start <= end:
mid = (start + end) // 2
if lst[mid] == key:
print(mid)
break
elif lst[mid] < key:
start = mid + 1
else:
end = mid -1
# 함수로 구현
def binarySearch(arr, N, key): # arr = 배열, N = arr의 길이, key = 찾으려는 값
start = 0
end = N - 1
while start <= end:
mid = (start + end) // 2
if arr[mid] == key:
return True # 검색 성공
elif arr[mid] < key:
start = mid + 1
else:
end = mid - 1
return False # 검색 실패
+재귀 함수 이용
def binarySearch(arr, start, end, key):
if start > end:
return False
else:
mid = (start + end) // 2
if arr[mid] == key:
return True # 검색 성공
elif arr[mid] < key:
return binarySearch(arr, mid+1, end, key)
else:
return binarySearch(arr, start, mid-1, key)