오름차순으로 정렬된 배열에서 원하는 숫자(target)을 찾는 알고리즘입니다.
정방향으로 푸는 방법과 재귀로 푸는 방법 두 가지가 있습니다.
정방향도 어떻게 보면 개념적으로는 재귀로 푸는 방법과 같은 방법입니다.
target = 25
m_list = [30, 94, 27, 92, 21, 37, 25, 47, 25, 53, 98, 19, 32, 32, 7]
length = len(m_list)
m_list.sort()
left = 0
right = length-1
while left<=right:
mid = (left+right)//2
if m_list[mid] == target:
print(mid+1)
break
elif m_list[mid]>target:
right = mid-1
else :
left = mid+1
def binarySearch(array, target, left, right):
middle_idx = (left+right)//2
print(middle_idx)
middle = array[middle_idx]
if target == middle:
print('answer {}'.format(middle_idx))
elif middle > target:
binarySearch(array, target,left,middle_idx-1)
elif middle < target:
binarySearch(array, target,middle_idx+1,right)
else:
return False
target = 25
m_list = [30, 94, 27, 92, 21, 37, 25, 47, 25, 53, 98, 19, 32, 32, 7]
length = len(m_list)
m_list.sort()
left = 0
right = length-1
binarySearch(m_list,target,0,right)
재귀 방식 코드가 잘못된 것 같아요 target 값이 없을 경우 조건을 수정하셔야 할 것 같습니다.