알고리즘: 이진탐색

Ju_Nik_e·2023년 6월 18일
0

이진탐색

데이터가 정렬돼 있는 상태에서 원하는 값을 찾아내는 알고리즘이다.
대상 데이터의 중앙값과 찾고자 하는 값을 비교해 데이터의 크기를 절반씩 줄이면서 대상을 찾는다.

시간복잡도

O(logN)
ex) 16개의 데이터면 최대 4번의 연산으로 원하는 데이터를 찾을 수 있다.

핵심 이론

  1. 현재 데이터셋의 중앙값을 선택한다.(평균값x)
  2. 중앙값 > 타깃 데이터 일 때 중앙값 기준으로 왼쪽 데이터셋을 선택한다.
  3. 중앙값 < 타깃 데이터일 때 중앙값 기준으로 오른쪽 데이터셋을 선택한다.
  4. 1~3과정을 반복하다가 중앙값 == 타깃 데이터이면 탐색을 종료한다.

코드 구현

def binary_search(arr, target):
    low = 0
    high = len(arr) - 1

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

    return -1

0개의 댓글