kjp0411 님의 블로그

탐색 - 이진 탐색 본문

Coding Test/Python

탐색 - 이진 탐색

kjp0411 2025. 9. 17. 12:52

이진 탐색

  • 데이터가 정렬돼 있는 상태에서 원하는 값을 찾아내는 알고리즘입니다.
  • 대상 데이터의 중앙값과 찾고자 하는 값을 비교해 데이터의 크기를 절반씩 줄이면서 대상을 찾습니다.
  • 정렬 데이터에서 원하는 데이터를 탐색할 때 사용하는 가장 일반적인 알고리즘입니다.
기능 특징 시간 복잡도
타깃 데이터 검색 중앙값 비교를 이용한 대상 축소 방식 O(logN)

 

이진 탐색의 핵심 이론

이진 탐색은 오름차순으로 정렬된 데이터에서 다음 4가지 과정을 반복합니다.

※ 내림차순이라면 조건을 반대로 하여 과정을 반복하면 됩니다.

 

이진 탐색 과정

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

이렇게 이진 탐색을 사용하면 예를 들어 16개의 데이터가 있을 때 최대 4번의 연산으로 원하는 데이터의 위치를 찾을 수 있습니다.

다만 이진 탐색은 꼭 데이터가 정렬되어 있어야 합니다.