start
, end
, mid
)를 사용해서 탐색을 하고, 찾으려는 데이터와 중간점 위치에 있는 데이터를 반복적으로 비교해서 원하는 데이터를 찾는 것이다.즉, 정렬된 배열에서 원하는 숫자(target)을 찾는 알고리즘으로 배열 전체의 중간값을 target 값과 비교하고 중간값이 target값보다 크면 왼쪽 부분만 선택한다. 그리고 왼쪽 부분의 중간값을 다시 target과 비교하는 방법이다.
이진 탐색을 푸는 방법은 아래와 같이 2가지 방향을 잡을 수 있다.
target = 3
m_list = [14, 2, 13, 6, 1, 7, 9, 10, 8, 11, 3, 4]
length = len(m_list)
m_list.sort()
left = 0
right = length - 1
while left <= right:
mid = (left + right)//2
if m_left[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_index = (left + right)//2
print(middle_index)
middle = array[middle_index]
if target == middle:
print('answer {}'.format(middle_index))
elif middle > target:
binarySearch(array, target, left, middle_index - 1)
elif middle < target:
binarySearch(array, target, middle_index + 1, right)
else:
return False
target = 3
m_list = [14, 2, 13, 6, 1, 7, 9, 10, 8, 11, 3, 4]
length = len(m_list)
m_list.sort()
left = 0
right = length - 1
binarySearch(m_list, target, 0, right)
https://velog.io/@kimdukbae/%EC%9D%B4%EB%B6%84-%ED%83%90%EC%83%89-%EC%9D%B4%EC%A7%84-%ED%83%90%EC%83%89-Binary-Search
https://wayhome25.github.io/cs/2017/04/15/cs-16/