카테고리 없음

이진 탐색 코드

ByteGuard 2025. 4. 15. 14:49
def binary_search(arr, target):
    # 시작 인덱스와 끝 인덱스를 초기화합니다.
    left = 0
    right = len(arr) - 1

    # 탐색 범위가 유효한 동안 반복합니다.
    while left <= right:
        # 중간 인덱스를 계산합니다.
        mid = (left + right) // 2

        # 중간값이 목표 값과 같은 경우, 인덱스를 반환합니다.
        if arr[mid] == target:
            return mid

        # 목표 값이 중간값보다 작으면, 왼쪽 절반을 다시 탐색합니다.
        elif arr[mid] > target:
            right = mid - 1

        # 목표 값이 중간값보다 크면, 오른쪽 절반을 다시 탐색합니다.
        else:
            left = mid + 1

    # 값을 찾지 못한 경우, -1을 반환합니다.
    return -1


# 예제 사용
sorted_list = [1, 3, 5, 7, 9, 11, 13]
target_value = 7

# 이진 탐색을 실행하고 결과 출력
result = binary_search(sorted_list, target_value)
print("찾은 인덱스:", result)  # 출력: 찾은 인덱스: 3