알고리즘의 성능, 효율성을 나타내는 척도로 시간 복잡도와 공간 복잡도가 있다.
시간 복잡도에는 빅오 표기법 외에도 3가지 표기법이 존재한다.
: 오메가(가장 빠른 수행시간 분석), 세타(평균 시간 분석), 빅오(가장 최악의 수행시간 분석)
최악의 상황을 보장할 수 있기 때문에 빅오 표기법을 이용한다.n ≥ n0인 모든 n에 대해 f(n) ≤ c · g(n)를 만족하는 양의 상수 c와 n0가 존재하면 f(n) = O(g(n))이다.

O(1) < O(log n) < O(n) < O(n log n) < O(n²) O(1)로 갈 수록 더 좋은 효율을 가진 것이다.
상수항 무시
O(3N) → O(N) 처럼 상수항을 무시하고 표시최고차항만 표시
O(N^2 + N + 1) → O(N^2) 처럼 최고차항을 제외하고선 다 무시한다.✅ 위의 규칙을 적용해 최종적으로 표현하면 O(N^2 + N + 1) → O(N^2)
입력 크기에 대해 어떠한 알고리즘이 실행되는 데 걸리는 시간으로, 주요 로직의 반복 횟수(연산의 횟수)를 중점적으로 측정된다. 주로 빅오 (Big - O) 표기법으로 나타낸다.
❗ 그렇다면 반복 횟수를 측정하면 된다.
어떠한 컴퓨터를 사용해도 반복 횟수는 변하지 않는다. 그래서 이러한 기준을 바탕으로 시간 복잡도를 측정하는 것이다.
프로그램을 실행시켰을 때, 필요로 하는 자원 공간의 양을 의미한다.
총 공간 = 고정 공간 + 가변 공간
❓그렇다면 알고리즘 성능을 파악할 때 뭐가 더 중요할까?
보통 알고리즘 성능을 판단할 때는 시간 복잡도를 기준으로 판단한다. 그리고, 공간 복잡도는 메모리의 발전으로 인해 중요도가 감소하고 있다.