1. 검색/탐색 알고리즘 (Searching Algorithm)
ㅇ 검색 문제
- 순서 리스트(ordered list) 또는 비순서화된 리스트 등에서,
- 어떤 원소/대상의 존재 및 그 위치를 찾는 것
ㅇ 검색 문제의 해 : 결국, 원소의 위치
2. 검색 관련 용어
ㅇ 키 (Key) : 다른 원소와 구별할 수 있는 요소
ㅇ 레코드 (Record) : 1 이상의 요소들이 서로 관련지어 모여진 자료 집합
3. 검색 알고리즘 종류
※ 검색 기법은, 자료구조에 의존 함
- 例) 배열(가장 기초적), 선형 리스트, 트리(이진 검색 트리 등), 그래프, 문자열 등
ㅇ 순차 탐색 (sequential search) / 선형 탐색 (linear search)
* (가장 간단하고 직접적인 탐색 방법)
- 실행 방식
. 처음 위치부터 순차적으로 살펴보면서 값이 있는지 보는 가장 단순한 검색 방법
- 시간복잡도 : O(n)
. 탐색 성공시, 평균 (1 + 2 + ... + n)/n = (n+1)/2번의 비교 필요
. 탐색 실패시, 최악 n번의 비교 필요
- 적용 : 정렬된 자료와 정렬되지 않은 자료 모두 가능
- 비 정렬 순차 검색 : 원하는 키값이 나올때까지 처음부터 끝까지 수행
- 기 정렬 순차 검색 : 중도에 키값 보다 큰 키값이 나오면 수행 중지
ㅇ 이진 탐색 (binary search)
- 실행 방식
. 기 정렬되어있는 순서 리스트에서 만 가능한 검색 방법
. 중앙 위치로부터 탐색 범위를 반씩 줄이면서 자료를 찾는 방법 ☞ 분할 정복법 참조
- 시간복잡도 : O(log n)
- 적용 : 정렬된 자료 만 가능
ㅇ 이진 검색 트리의 탐색
ㅇ 그래프 탐색
- 깊이 우선 탐색 (Depth First Search, DFS)
- 너비 우선 탐색 (Breadth First Serach, BFS)