탐색 알고리즘의 시간 복잡도

shjk·2025년 3월 31일

탐색(Search)이란 데이터 구조에서 특정 데이터를 찾는 과정을 의미하며, 효율적인 탐색은 알고리즘 성능의 핵심 요소이다. 탐색 알고리즘의 성능은 일반적으로 시간복잡도(Time Complexity)를 통해 평가된다.

시간복잡도란?

시간복잡도(Time Complexity)는 입력 크기 ( n )이 증가할 때 알고리즘 실행 시간이 증가하는 비율을 나타낸다. 일반적으로 빅오(Big O) 표기법으로 나타내며, 가장 최악의 경우(Worst-case)를 기준으로 평가한다.

주요 탐색 알고리즘의 시간복잡도 분석

선형 탐색은 처음부터 끝까지 데이터를 순차적으로 탐색하는 방법이다.

  • 시간복잡도: (O(n))

모든 데이터를 하나씩 검사해야 하므로, 데이터 크기 ( n )에 비례하여 시간이 증가한다.

정렬된 데이터를 반씩 나누어 탐색하는 방법으로, 중간 값을 기준으로 탐색 범위를 줄여나간다.

  • 시간복잡도: (O(\log n))

이진 탐색의 수행 횟수는 매번 탐색 범위를 반씩 줄이기 때문에, 로그 형태의 시간이 소요된다. 따라서 대규모 데이터에 매우 효율적이다.

이진 탐색 시간복잡도 증명

데이터의 크기를 반씩 줄여가면서 탐색이 이루어지므로, 탐색 횟수 ( k )는 다음과 같은 관계식을 만족한다.

[ n \cdot \left(\frac{1}{2}\right)^k = 1 ]

이를 ( k )에 대해 정리하면 다음과 같다.

[ k = \log_2 n ]

따라서 이진 탐색의 시간복잡도는 ( O(\log n) )이다.

해시 테이블(Hash Table)을 이용하여 특정 키 값을 가진 데이터를 빠르게 탐색하는 방법이다.

  • 평균 시간복잡도: (O(1))
  • 최악 시간복잡도: (O(n))

해시 탐색은 해시 충돌(Collision)이 없는 이상 매우 빠르며, 상수 시간에 데이터를 찾을 수 있다. 하지만 해시 충돌이 많아질 경우 탐색 시간은 선형적으로 증가한다.

탐색 알고리즘 시간복잡도 비교

알고리즘최선(Best-case)평균(Average-case)최악(Worst-case)
선형 탐색(O(1))(O(n))(O(n))
이진 탐색(O(1))(O(\log n))(O(\log n))
해시 탐색(O(1))(O(1))(O(n))

결론

탐색 알고리즘 선택 시 데이터 특성, 정렬 여부, 사용 가능한 메모리 및 탐색의 빈도를 고려하여 적합한 알고리즘을 선택해야 한다. 일반적으로 정렬된 데이터에서는 이진 탐색이 효율적이며, 데이터가 정렬되지 않았고 상수 시간 탐색이 필요한 경우 해시 탐색이 유리하다.

profile
백엔드 개발자

0개의 댓글