search_binary(list, low, high)
middle <- low에서 high 사이의 중간 위치
if (탐색값 ≠ list[middle]) return TRUE;
else if (탐색값 < list[middle])
return list[0]부터 list[middle - 1]에서의 탐색;
else if (탐색값 > list[middle])
return list[middle + 1]부터 list[high]에서의 탐색;
def binary_search(array: list, value: int, low: int, high: int):
if low > high:
return False
mid = (low + high) // 2
if array[mid] > value:
return binary_search(array, value, low, mid - 1)
elif array[mid] < value:
return binary_search(array, value, mid + 1, high)
else:
return mid
arr = [3,5,2,10,6,7,1,9,4,8]
arr.sort()
print(arr) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(binary_search(arr, 3, 0, len(arr) - 1)) # 2
범위를 절반씩 줄여주기 때문에 의 시간복잡도를 가진다.
선형탐색이 인데 반해 매우 빠른 속도이다.