시간 복잡도
시간 복잡도란 알고리즘의 효율성을 판단하기 위한 지표로서, 알고리즘의 절대시간이 아닌, 알고리즘을 수행하는데 사용되는 연산들이 몇 번 이루어지는가에 대한 것을 수로 표기한 것이다. 연산에는 산술, 대입, 비교, 이동이 있다. 시간 복잡도, 즉 성능 측정에 사용되는 표기법은 크게 세 가지로 나뉘며 Big-O, Big-Omega(
- Big-O
모든
예를 들면
- Big-Omega
모든
예를 들면
- Theta
모든
추가적으로 Small-O, Small-omega(
Small-O는 Big-O에서 등호를 뺀다.
예를 들면
Small-O와 Big-O의 차이점은 다음과 같다.
- Big-O는 실수
- Small-O는 모든 실수
Big-O 표기법 성능 비교

Better
상수 함수 < 로그 함수 < 선형 함수 < 다항 함수 < 지수 함수 < 재귀 함수
Big-O 표기법 예제
: Operation push and pop on Stack : Binary Tree : for loop : Quick Sort, Merge Sort, Heap Sort : Double for loop, Insert Sort, Bubble Sort, Selection Sort : Fibonacci Sequence
시간 복잡도 분석 종류
- 입력크기(input size)에만 종속
- 입력값과는 무관하게 결과값은 항상 일정
- 입력크기와 입력값 모두에 종속
- 단위연산이 수행되는 횟수가 최대인 경우 선택
- 입력크기와 입력값 모두에 종속
- 모든 입력에 대해 단위연산이 수행되는 기대치(평균)
- 각 입력에 대해서 확률 할당 가능
- 입력크기와 입력값 모두에 종속
- 단위연산이 수행되는 횟수가 최소인 경우 선택
표기법 간의 관계
표기법 | 의미 |
Big-O 계산 실습
a=10 # Constant 1
b=20 # Constant 1
c=30 # Constant 1
for i in range(n):
for j in range(n):
x = i * i # n^2
y = j * j # n^2
z = i * j # n^2
for k in range(n):
w = a * k + 40 # n
v = b * b # n
정렬 알고리즘 비교
Sorting Algorithm | 공간 복잡도 | 시간 복잡도 | ||
최악 | 최선 | 평균 | 최악 | |
Bubble Sort | ||||
Heap Sort | ||||
Insertion Sort | ||||
Merge Sort | ||||
Quick Sort | ||||
Selection Sort | ||||
Shell Sort | ||||
Smooth Sort |
Reference
[1] https://arer.tistory.com/99
[2] https://noahlogs.tistory.com/27
[3] https://sehoi.github.io/2014-03-03/time-complexity/
[4] https://ratsgo.github.io/data%20structure&algorithm/2017/09/13/asymptotic/
'Computer Science > 백준 알고리즘' 카테고리의 다른 글
쉬트라센 알고리즘 (Strassen Algorithm) (0) | 2020.03.04 |
---|---|
분할정복법과 동적프로그래밍 (0) | 2020.03.04 |
정렬 알고리즘의 장단점과 시간 복잡도 및 공간 복잡도 (2) | 2020.03.04 |
P NP 문제 (0) | 2020.03.04 |
최소 비용 신장 트리(Minimum Spanning Tree) (0) | 2020.03.04 |