Binary search
탐색범위를 반으로 줄여나가는 알고리즘
탐색 범위의 시작과 끝을 보관하는 변수를 사용
-element가 중간값보다 작으면, 오른쪽 반은 더 이상 볼 필요가 없다.
element가 중간값보다 크면, 왼쪽 반은 더 이상 볼 필요가 없다.
def binary_search(element, some_list):
first = 0
end = len(some_list) - 1
for item in range(len(some_list)):
mid_index = (first + end) // 2
if some_list[mid_index] == element:
return mid_index
else:
if some_list[mid_index] > element:
end = mid_index
elif some_list[mid_index] < element:
if some_list[mid_index + 1] == element:
return mid_index + 1
else:
first = mid_index
return None
print(binary_search(2, [2, 3, 5, 7, 11]))
print(binary_search(0, [2, 3, 5, 7, 11]))
print(binary_search(5, [2, 3, 5, 7, 11]))
print(binary_search(3, [2, 3, 5, 7, 11]))
print(binary_search(11, [2, 3, 5, 7, 11]))
def binary_search(element, some_list):
start_index = 0
end_index = len(some_list) - 1
while start_index <= end_index:
midpoint = (start_index + end_index) // 2
if some_list[midpoint] == element:
return midpoint
elif some_list[midpoint] > element:
end_index = midpoint - 1
else:
start_index = midpoint + 1
return None
def binary_search(element, some_list):
index = len(some_list)//2
for i in range(len(some_list)):
if some_list[index] == element:
return index
elif some_list[index] > element:
index = index//2
elif some_list[index] < element:
index = (index + len(some_list))//2
return None