탐색 알고리즘 (Search Algorithm)
탐색 알고리즘이란, 주어진 자료 구조 내에서 원하는 데이터를 효율적으로 찾는 방법을 의미합니다.
탐색 대상은 배열, 리스트, 트리, 해시 테이블 등 다양한 자료구조가 될 수 있으며, 자료구조의 특성에 맞는 탐색 알고리즘을 선택하는 것이 성능 최적화의 핵심입니다.
📌 탐색 알고리즘의 종류
✅ 1. 선형 탐색 (Linear Search Algorithm)
- 원리: 데이터의 첫 번째 요소부터 순차적으로 하나씩 비교하며 원하는 값을 찾는 방식입니다.
- 정렬 여부: 정렬되지 않은 배열에도 사용 가능
- 시간 복잡도:
- 평균/최악: O(n)
- 특징:
- 가장 단순하고 구현이 쉬움
- 데이터가 많을수록 성능 저하가 큼
- 정렬 여부와 관계없이 동작
✅ 2. 이진 탐색 (Binary Search Algorithm)
- 원리: 정렬된 배열에서 중앙값과 비교하며 탐색 범위를 절반씩 줄여나가는 방식입니다.
- 정렬 필요: 반드시 오름차순 또는 내림차순 정렬이 되어 있어야 사용 가능
- 시간 복잡도:
- 평균/최악: O(log n)
- 특징:
- 매우 빠름
- 배열이 정렬되어 있어야 사용 가능
- 재귀 또는 반복문으로 구현 가능
✅ 3. 해시 탐색 (Hash Search Algorithm)
- 원리: 해시 함수를 통해 데이터를 고유 인덱스에 직접 매핑하여 검색합니다.
- 정렬 필요: 필요 없음
- 시간 복잡도:
- 평균: O(1)
- 최악: O(n) (해시 충돌 발생 시)
- 특징:
- 가장 빠른 탐색 방식 중 하나
- 충돌 처리 기법(체이닝, 오픈 어드레싱 등)이 중요
- 메모리 사용량이 많을 수 있음
✅ 마무리
탐색 알고리즘은 데이터 구조와 문제 유형에 따라 다른 전략이 요구됩니다.
예를 들어, 정렬된 배열에는 이진 탐색이 적합하고, 키 기반 조회가 많다면 해시 탐색이 유리합니다.
상황에 맞는 알고리즘을 선택하는 것이 시간 복잡도 최적화의 핵심입니다.
'알고리즘 > 알고리즘 분류' 카테고리의 다른 글
알고리즘 기법 [부분 배열 정렬] (0) | 2024.12.01 |
---|---|
[알고리즘] 비트연산(비트 마스크) (0) | 2024.12.01 |
[알고리즘] 완전 탐색 알고리즘 (Brute-Force Algorithm) (8) | 2022.05.31 |
[알고리즘] 탐욕 알고리즘(Greedy Algorithm) 이란? (16) | 2022.05.30 |
[알고리즘] 시간 복잡도란? 알고리즘 효율을 판단하는 핵심 개념 (9) | 2022.05.30 |