알고리즘 시간복잡도, 공간복잡도
· 약 3분
알고리즘 시간복잡도, 공간복잡도 개념
- 시간복잡도: 주어진 입력에 따라 알고리즘이 실행되는데 걸리는 시간의 양
- 공간복잡도: 주어진 입력에 따라 필요한 저장 공간의 양
- 성능 예측, 효율성 비교, 자원 최적화
알고리즘 복잡도 표기법, 시간복잡도, 공간복잡도
알고리즘 복잡도 표기법
구분 | 내용 | 비고 |
---|---|---|
Big O | 알고리즘이 최악의 성능일 때 평가 | 일반적 분석 |
Big Ω | 알고리즘이 최상의 성능일 때 평가 | 최적 상황 분석 |
Big θ | 알고리즘의 평균 성능 평가 | 전반적 성능 분석 |
- 주로 Big O 표기법으로 알고리즘의 복잡도 평가 및 측정
알고리즘 시간복잡도
구분 | 내용 | 사례 |
---|---|---|
상수 시간복잡도, 입력 크기와 관계 없이 실행 | 해시테이블 | |
로그 시간복잡도, 입력에 따라 로그에 비례 | 이진 검색 | |
선형 시간복잡도, 입력에 따라 시간 증가 | 선형 검색 | |
선형로그 시간복잡도, 효율적 정렬 알고리즘 | 병합정렬, 퀵정렬 | |
이차 시간복잡도, 중첩 루프 사용 | 버블정렬, 삽입정렬 | |
지수 시간복잡도, 피보나치 수열 계산 | 피보나치 재귀 | |
팩토리얼 시간복잡도, 매우 비효율적 | 순열 생성 |
알고리즘 공간복잡도
구분 | 내용 | 사례 |
---|---|---|
상수 공간복잡도, 입력 상관없이 일정 공간 사용 | 스왑 알고리즘 | |
선형 공간복잡도, 입력 크기 비례 공간 사용 | 배열, 리스트 | |
이차 공간복잡도, 이차원 배열 사용 공간 | 행렬 곱셈 |
알고리즘 복잡도 측정방법
구분 | 시간복잡도 | 공간복잡도 |
---|---|---|
실제 측정 | 실행시간 측정하여 복잡도 측정 | 메모리 프로파일러 통한 사용량 측정 |
이론적 측정 | 빅오 표기법 등 복잡도를 수학적 유도로 분석 | 알고리즘이 사용하는 변수, 자료구조 분석 |
- 데이터의 정렬 여부, 중복 여부에 다른 알고리즘의 성능 차이 고려