이진탐색 (Binary Search)

김태인·2022년 10월 21일
0

알고리즘

목록 보기
9/9
post-thumbnail
#찾고싶은 값
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
profile
코딩이 취미가 되는 그날까지

0개의 댓글