728x90
알고리즘의 성능 분석 방법
1. 수행 시간 측정
- 두 개의 알고리즘의 실제 수행 시간을 측정한다.
- 실제로 구현하여야 하며, 동일한 하드웨어를 사용해야 한다.
2. 알고리즘의 복잡도 분석
- 알고리즘이 수행하는 연산의 횟수를 측정하여 비교한다.
- 실제로 구현하지 않아도 된다.
- 연산의 수행 횟수는 입력의 개수 n에 대한 함수이다.
2-1) 시간 복잡도
- 전체 소요 시간 = 컴파일 시간 + 실행 시간
- 방법: 전역 변수 count의 사용, 단계수 테이블 방식
2-2) 공간 복잡도
- 공간 요구량 = 고정 공간 요구 + 가변 공간 요구
- 고정 공간: 프로그램 입출력의 횟수나 크기와 관계없는 공간
- 가변 공간: 해당 문제의 인스턴스(I)에 의존하는 공간
Asymptotic Notation(점근 표기법)
점근 표기법에는 빅오(함수의 상한), 빅오메가(함수의 하한), 빅세타(함수의 상한 및 하한) 표기법이 있는데, 그 중 가장 정밀한 것은 빅세타 표기법이지만 통상적으로는 빅오 표기법을 사용한다.
빅오 표기법
빅오 표기법은 연산의 횟수를 대략적(점근적)으로 표기한 것이다. 시간복잡도 함수에서 차수가 가장 큰 항을 제외한 다른 항들은 상대적으로 무시될 수 있다.
O(n!) > O(2^n) > O(n^k) > O(n^3) > O(n^2) > O(nlogn) > O(n) > O(logn) > O(1)
※ 최선, 평균, 최악의 경우 => 최악의 경우가 가장 계산이 쉽고 의미가 있어 널리 사용된다.
출처) C언어로 쉽게 풀어쓴 자료구조
728x90
'알고리즘' 카테고리의 다른 글
순환 알고리즘과 반복 알고리즘 (0) | 2023.04.10 |
---|---|
0-1 BFS(0-1 Breadth First Search) 알고리즘 (0) | 2023.02.08 |
재귀 방법으로 순열과 조합 구현하기 (0) | 2023.02.08 |
★ 코딩 테스트에 나오는 알고리즘/문제 유형 총정리 (0) | 2023.02.01 |
6가지 대표적인 정렬 알고리즘(Sorting Algorithm) (1) | 2022.12.29 |