이분 탐색(Binary Search)은 정렬된 배열 또는 리스트에서 원하는 값을 효율적으로 찾는 알고리즘입니다. 이분 탐색은 반복적으로 중간 값을 선택하고 원하는 값을 찾을 때까지 범위를 반으로 줄여나가는 방식으로 동작합니다. 이 알고리즘은 탐색 범위가 크고 정렬되어 있는 경우에 유용하게 사용됩니다.

이분 탐색의 주요 특징:

  1. 정렬된 배열: 이분 탐색은 정렬된 배열 또는 리스트에서만 사용할 수 있습니다.
  2. 중간값 선택: 현재 탐색 범위의 중간 값을 선택하여 찾고자 하는 값과 비교합니다.
  3. 범위 축소: 중간 값과 찾고자 하는 값의 비교 결과에 따라 탐색 범위를 반으로 줄여나갑니다.
  4. 시간 복잡도: 이분 탐색은 탐색 범위를 반으로 줄이므로 O(log n)의 시간 복잡도를 가집니다.

이분 탐색의 활용 예시:

파이썬 코드를 통해 이분 탐색을 예시로 살펴보겠습니다. 다음은 정렬된 배열에서 특정 원소의 위치를 이분 탐색으로 찾는 코드입니다.

def binary_search(arr, target):
    left, right = 0, len(arr) - 1

    while left <= right:
        mid = (left + right) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1

    return -1

# 정렬된 배열
sorted_array = [1, 3, 5, 7, 9, 11, 13, 15]

target_value = 7
result_index = binary_search(sorted_array, target_value)
if result_index != -1:
    print(f"{target_value}의 위치: {result_index}")
else:
    print(f"{target_value}를 찾을 수 없습니다.")

이 코드는 정렬된 배열에서 특정 원소의 위치를 이분 탐색으로 찾는 예시입니다. 이분 탐색을 사용하여 효율적으로 원하는 값을 찾을 수 있습니다.