1. Algorithm's Efficiency
- Time efficiency - 시간복잡도
- Space efficiency - 공간복잡도
- 사실 이제 공간복잡도는 그렇게 큰 문제는 아님. 메모리 기술이 워낙 좋아져서 이제는 시간복잡도가 거의 유일한 이슈...
2. Measuring Running Time
- 실제 프로그램 실행 시간을 측정하는 방식
- 단순하게 프로그램 실행시간을 초/밀리초 등으로 측정
- 시간 측정의 장애 요소
- 각 컴퓨터마다 다른 실행 속도
- 프로그램과 컴파일러 등의 성능
- 프로그램의 실행시간을 정확하게 정의하기 어려움
- 프로그램의 실행시간만으로 알고리즘의 시간복잡도를 평가하기도 애매함
- 기본적인 연산의 횟수를 세는 방식
- 알고리즘의 핵심 기능에 해당되는 기본 연산들만을 고려
- 주로, 반복문 안에서의 연산이 중요!
- 예를 들면, 정렬 문제에서는 키값 비교 연산, 계산 문제에서는 사칙 연산 등의 횟수를 세는 것
3. Order of Growth
4. Time Efficiency의 분류
- The Worst-case efficiency - 최악의 경우 시간복잡도
- The Best-case efficiency - 최선의 경우 시간복잡도
- The Average-case efficiency - 평균 시간복잡도
5. Asymptotic order of growth
- O(g(n)) - g(n) 이하의 order of growth function 집합
- Ω(g(n)) - g(n) 이상의 order of growth function 집합
- Θ(g(n)) - g(n)과 동일한 order of growth function 집합
g(n)은 실제 기본 연산 횟수에 대한 식
위의 방식에 낮은 차수의 항과 상수항은 무시하고 최대 차수 항의 차수로만 비교