직관적 표현 ("A가 B보다 조금 빠르다")
실제 코드 실행 시간 비교
입력 크기에 따른 성능 차이
✅ 그래서 등장한 것이 바로 Big-O 표기법입니다.
입력 크기
n이 커질수록 성능이 어떻게 변화하는지를 함수로 표현하는 방식입니다.
예시:
O(1) : 입력 크기와 관계 없이 일정한 시간O(n) : 입력이 늘어나면 그에 비례하여 처리 시간도 늘어남O(n^2) : 입력이 두 배가 되면, 연산량은 네 배로 증가코드나 알고리즘을 보고 얼마나 많은 연산이 수행되는지 대략적으로 판단합니다.
예시:
1 → 상수 시간n + 1 → 선형 증가n^2 + 1 → 제곱에 비례한 증가예시:
O(1 + n + 4 + n^2 + 1)
→ O(n^2)
| 시간 복잡도 | 의미 | 예시 알고리즘 |
|---|---|---|
| O(1) | 상수 시간 | 배열의 인덱스로 접근 |
| O(log n) | 로그 시간 | 이진 탐색 |
| O(n) | 선형 시간 | 배열 전체 순회 |
| O(n log n) | 로그 선형 시간 | 병합 정렬, 퀵 정렬 평균 |
| O(n^2) | 이차 시간 | 이중 for문, 버블 정렬 |
위 이미지는 이러한 시간 복잡도 곡선이 입력 크기 n이 커질수록 얼마나 차이가 나는지를 시각적으로 보여줍니다.
Big-O 표기에서 자주 등장하는 log n의 개념을 이해해 봅시다.
2^1 = 22^2 = 42^3 = 8b라고 했을 때, log₂(b)는 그 지수를 의미합니다.즉,
log₂(n)은 "2를 몇 번 곱해야 n이 되는가?"를 의미합니다.