Learning
토픽 2 / 82

시간 복잡도 (Time Complexity)

시간 복잡도 (Time Complexity)

알고리즘이 실행되는 데 필요한 시간을 입력 크기(n)의 함수로 표현한 것으로, Big-O 표기법으로 최악 케이스의 증가율을 나타냄

목적: 알고리즘 효율성 분석, 성능 비교, 확장성 예측

특징: 입력 크기 함수, 최악 케이스, 상수 무시, 최고차항만

Big-O 표기법: 점근적 상한, 최악 케이스, O(f(n)) - n이 커질 때 f(n)에 비례

표기법

  • Big-O(O): 상한(최악), 일반적 사용
  • Big-Omega(Ω): 하한(최선)
  • Big-Theta(Θ): 상한=하한(점근적 밀착 한계, Tight Bound)

복잡도 순서: O(1) < O(log n) < O(√n) < O(n) < O(n log n) < O(n²) < O(n³) < O(2ⁿ) < O(n!)

주요 복잡도

  • O(1): 상수, 해시 테이블 접근, 배열 인덱스
  • O(log n): 로그, 이진 탐색, 균형 트리
  • O(n): 선형, 순차 탐색, 배열 순회
  • O(n log n): 선형로그, 병합 정렬, 힙 정렬, 퀵 정렬(평균)
  • O(n²): 제곱, 버블 정렬, 삽입 정렬, 선택 정렬
  • O(2ⁿ): 지수, 피보나치(재귀), 부분집합
  • O(n!): 팩토리얼, 순열, 외판원(브루트 포스)

최선·평균·최악: 퀵 정렬 - 최선 O(n log n), 평균 O(n log n), 최악 O(n²)

장점: 성능 예측, 알고리즘 비교, 확장성 평가

단점: 상수 무시, 작은 입력에서 부정확, 실제 성능과 차이

적용사례: 알고리즘 선택, 성능 최적화, 확장성 설계

연관: Big-O, 공간 복잡도, 알고리즘 분석, 점근 표기법