시간복잡도 Time-Complexity란?
시간복잡도는 데이터를 처리하는 과정에 있어서 얼마나 시간이 걸리는 지 확인할 수 있는 지표이다.
알고리즘의 속도를 의미한다.
대표적으로 빅오(Big-O) 표기법을 사용한다.
시간복잡도 그래프
제일 빠른 순 부터 나열하면
Excellent/Best
1 O(1) - 일반 배열의 랜덤 Access 등에 해당함. C++ STL의 Array, Vector, List의 Random Access가 이에 해당함.
Good
2 O(log n) - 이진탐색의 시간복잡도에 해당함. STL C++의 Set과 map의 컨테이너에서 find, I/O 등의 시간복잡도에 해당함.
정렬알고리즘에서는 퀵정렬의 시간복잡도에 해당함.
Fair
3 O(n) - For문 한 번 돌 때의 시간복잡도에 해당함. STL C++의 Vector에서 find와 I/O 부분의 시간복잡도에 해당함.
Bad
4 O(n log n) - 예제 없음. 그냥 이진탐색을 몇(n)번 실행하는것으로 생각하면 될 것 같다.
Horrible/Worst
5 O(n^2) - For문 두 번 돌 때의 시간복잡도에 해당함. 정렬 알고리즘 중에서는 삽입정렬,선택정렬, 버블정렬이 이에 해당함.
6 O(2^n) - 재귀로 표현하는 피보나치 수열.
7 O(n!) - 예제 없음.
'Tech Blog > Info(Linux,etc)' 카테고리의 다른 글
컴퓨터에서 % 기호와 // 기호 (1) | 2023.05.10 |
---|---|
문자열 인코딩 방식 정리 (0) | 2023.02.09 |
프로세스 스케줄링이란? (0) | 2023.01.10 |
Rest API 의미 정리 (0) | 2022.09.14 |
Xavier AGX Fan 명령어, Cuda Cudnn 용어 정리 등 (1) | 2021.10.11 |