본문으로 건너뛰기

알고리즘 시간복잡도, 공간복잡도

· 약 4분

알고리즘 시간복잡도, 공간복잡도 개념

  • 시간복잡도: 주어진 입력에 따라 알고리즘이 실행되는데 걸리는 시간의 양
  • 공간복잡도: 주어진 입력에 따라 필요한 저장 공간의 양
  • 성능 예측, 효율성 비교, 자원 최적화

알고리즘 복잡도 표기법, 빅오표기법

알고리즘 복잡도 표기법

구분내용비고
Big O알고리즘이 최악의 성능일 때 평가일반적 분석
Big Ω알고리즘이 최상의 성능일 때 평가최적 상황 분석
Big θ알고리즘의 평균 성능 평가전반적 성능 분석
  • 주로 Big O 표기법으로 알고리즘의 복잡도 평가 및 측정

빅오표기법 유형

Big O Chart

연산시간유형설명
매우빠름O(1)O(1)자료의 크기와 무관하게 항상 같은 속도로 작용
-O(logn)O(logn)일정한 크기로 잘라서 해결하는 유형
빠름O(n)O(n)입력순서대로 처리, 자료 크기와 수행시간 정비례
-O(nlogn)O(nlogn)분할과 합병, 정렬 알고리즘의 최소한의 복잡도
-O(n2)O(n^2)입력한 n 크기가 작을시 nlognnlogn보다 빠르나, 데이터 크기가 증가시 급격하게 비효율
느림O(2n)O(2^n)지수형으로 가능한 해결방법 모두 검사, 매우 비효율적
느림O(n!)O(n!)입력 N에 따라 시간복잡도가 매우 빠르게 증가, 재고려 필요

알고리즘 시간복잡도, 공간복잡도

알고리즘 시간복잡도

구분내용사례
O(1)O(1)상수 시간복잡도, 입력 크기와 관계 없이 실행해시테이블
O(logn)O(logn)로그 시간복잡도, 입력에 따라 로그에 비례이진 검색
O(n)O(n)선형 시간복잡도, 입력에 따라 시간 증가선형 검색
O(nlogn)O(nlogn)선형로그 시간복잡도, 효율적 정렬 알고리즘병합정렬, 퀵정렬
O(n2)O(n^2)이차 시간복잡도, 중첩 루프 사용버블정렬, 삽입정렬
O(2n)O(2^n)지수 시간복잡도, 피보나치 수열 계산피보나치 재귀
O(n!)O(n!)팩토리얼 시간복잡도, 매우 비효율적순열 생성

알고리즘 공간복잡도

구분내용사례
O(1)O(1)상수 공간복잡도, 입력 상관없이 일정 공간 사용스왑 알고리즘
O(n)O(n)선형 공간복잡도, 입력 크기 비례 공간 사용배열, 리스트
O(n2)O(n^2)이차 공간복잡도, 이차원 배열 사용 공간행렬 곱셈

알고리즘 복잡도 측정방법

구분시간복잡도공간복잡도
실제 측정실행시간 측정하여 복잡도 측정메모리 프로파일러 통한 사용량 측정
이론적 측정빅오 표기법 등 복잡도를 수학적 유도로 분석알고리즘이 사용하는 변수, 자료구조 분석
  • 데이터의 정렬 여부, 중복 여부에 다른 알고리즘의 성능 차이 고려