#찾고싶은 값
finding_target = 4
#찾아야할 리스트
finding_numbers = [0, 3, 5, 6, 1, 2, 4]
#함수 선언(파라미터로 타겟값과 리스트)
def is_exist_target_number_binary(target, numbers):
#이진탐색을 위해 sort활용하여 정렬
numbers.sort()
#최소값 정의
current_min = 0
#최대값 정의
current_max = len(numbers) - 1
#시도값 정의
current_guess = (current_min + current_max) // 2
# 최소값이 최대값보다 작거나 같다면 반복
while current_min <= current_max:
#찾아야할 리스트내에서 시도값이 타겟과 같다면 리턴 트루 종료
if numbers[current_guess] == target:
return True
# 시도값보다 타겟값이 크다면 최소값은 시도값 +1
if numbers[current_guess] < target:
current_min = current_guess + 1
# 시도값보다 타겟값이 작다면 최대값은 시도값 -1
else:
current_max = current_guess -1
# 시도값 재 정의
current_guess = (current_max + current_min) // 2
return False
result = is_exist_target_number_binary(finding_target, finding_numbers)
print(result)
- 이진 탐색은 정렬이 되어있어야 사용이 가능하다
- 이진 탐색의 시간복잡도는 log N