알고리즘/알고리즘 분류

[알고리즘] 탐색 알고리즘 (Search Algorithm)

개발하는 동그리 2022. 5. 31. 11:30
탐색 알고리즘 (Search Algorithm)
탐색 알고리즘이란, 주어진 자료 구조 내에서 원하는 데이터를 효율적으로 찾는 방법을 의미합니다.
탐색 대상은 배열, 리스트, 트리, 해시 테이블 등 다양한 자료구조가 될 수 있으며, 자료구조의 특성에 맞는 탐색 알고리즘을 선택하는 것이 성능 최적화의 핵심입니다.

 


📌 탐색 알고리즘의 종류

✅ 1. 선형 탐색 (Linear Search Algorithm)

  • 원리: 데이터의 첫 번째 요소부터 순차적으로 하나씩 비교하며 원하는 값을 찾는 방식입니다.
  • 정렬 여부: 정렬되지 않은 배열에도 사용 가능
  • 시간 복잡도:
  • 평균/최악: O(n)
  • 특징:
    • 가장 단순하고 구현이 쉬움
    • 데이터가 많을수록 성능 저하가 큼
    • 정렬 여부와 관계없이 동작

✅ 2. 이진 탐색 (Binary Search Algorithm)

  • 원리: 정렬된 배열에서 중앙값과 비교하며 탐색 범위를 절반씩 줄여나가는 방식입니다.
  • 정렬 필요: 반드시 오름차순 또는 내림차순 정렬이 되어 있어야 사용 가능
  • 시간 복잡도:
  • 평균/최악: O(log n)
  • 특징:
    • 매우 빠름
    • 배열이 정렬되어 있어야 사용 가능
    • 재귀 또는 반복문으로 구현 가능

 

✅ 3. 해시 탐색 (Hash Search Algorithm)

  • 원리: 해시 함수를 통해 데이터를 고유 인덱스에 직접 매핑하여 검색합니다.
  • 정렬 필요: 필요 없음
  • 시간 복잡도:
    • 평균: O(1)
    • 최악: O(n) (해시 충돌 발생 시)
  • 특징:
    • 가장 빠른 탐색 방식 중 하나
    • 충돌 처리 기법(체이닝, 오픈 어드레싱 등)이 중요
    • 메모리 사용량이 많을 수 있음

 

✅ 마무리

탐색 알고리즘은 데이터 구조와 문제 유형에 따라 다른 전략이 요구됩니다.
예를 들어, 정렬된 배열에는 이진 탐색이 적합하고, 키 기반 조회가 많다면 해시 탐색이 유리합니다.
상황에 맞는 알고리즘을 선택하는 것이 시간 복잡도 최적화의 핵심입니다.