Dev.Paul Tech, Photo, Life Blog

[CS] 번외, 시간 복잡도 편


CS 부수기 - 시간 복잡도 편


시간 복잡도


자료 구조를 공부하면 빼놓을 수 없는 부분이 시간 복잡도이다.

자료 구조에서 자료의 삽입, 삭제, 탐색을 위한 시 / 공간적 소요량 혹은 알고리즘에서의 성능 분석에 많이 사용된다.

일반적으로 큰 영역으로는 복잡도라고 부르며, 크게 시간 복잡도(Time Complexity)공간 복잡도(Space Complextiy)로 나눠진다.

정의는 다음과 같다.

시간 복잡도 : 입력문제를 해결하는데 걸리는 시간 사이의 함수 관계

공간 복잡도 : 프로그램이 실행 시에 필요로 하는 자원 공간의 양


일반적으로는 시간 복잡도를 많이 요구하는 편이다. 시간은 금이기 때문에

시간 복잡도를 표기하는 방법은 대표적으로 다음 세 가지가 있다.

Big-O : 상한 점근, 일반적으로 최악의 경우
Big-Ω : 하한 점근, 일반적으로 최선의 경우
Big-Θ : 상한 점근과 하한 점근의 평균, 최악과 최선의 평균


그리고, 일반적인 시간 복잡도에서의 표기 방법은 Big-O 표기법을 주로 사용한다.
최악의 경우에서 가장 많은 시간이 소요되는 경우를 찾기 때문이다.

그렇다면 각 자료 구조에서의 시간 복잡도는 다음 표를 참고하면 된다.

자료 구조 삽입 삭제 탐색
배열 (Array) O(n) O(n) O(n)
스택 (Stack) O(n) O(1) O(1)
큐 (Queue) O(n) O(1) O(1)
링크드 리스트 (Linked List) O(n) O(1) O(1)
더블 링크드 리스트 (Double Linked List) O(n) O(1) O(1)
이진 탐색 트리 (Binary Search Tree) O(log n) O(log n) O(log n)
AVL 트리 O(log n) O(log n) O(log n)


Adios.