알고리즘 [탐색] - 순차탐색(linear search) 알고리즘
19 May 2017 |순차검색(Sequential Search), 선형검색 알고리즘(linear search algorithm)
- 리스트에서 찾고자 하는 값을 맨 앞에서부터 끝까지 차례대로 찾아 나가는 것
- 시간복잡도 O(n)
구현코드
def sequential_search(s, key):
i = 0
while i < len(s):
if s[i] == key:
return i
i += 1
return -1
def sequential_search2(s, key):
for idx, val in enumerate(s):
if val == key:
return idx
return -1
순차탐색 vs 이진탐색
- 시간복잡도를 비교하면 순차탐색 O(n), 이진탐색(O(log n)으로 이진 탐색이 훨씬 빠르다.
- 단, 이진탐색은 데이터가 정렬되어 있어야 한다는 전제 조건이 있다.
- 일반적인 정렬 알고리즘은 O(n log n)의 시간 복잡도를 가지기에 이진탐색이 반드시 좋다고 할 수 없다.
- 따라서 상황에 맞는 알고리즘을 선택하는 것이 중요하다.