시간복잡도 (Time Complexity)
- 입력 데이터가 특정 알고리즘을 거쳐 결과가 나오는데 걸리는 시간을 의미한다.
시간
은 정확히 몇 초가 걸린다는 의미가 아닌 데이터의 증가에 따른 시간(연산속도
)의 증가 정도를 말한다.
시간복잡도
는대입연산
,사칙연산
,비교구문
,함수호출
등의 연산을 기준으로 계산한다.시간복잡도
는최선의 경우
,평균의 경우
,최악의 경우
로 나뉘어진다.
시간복잡도 | 내용 |
---|---|
최선의 경우(빅-오메가) | 최선의 상황을 기준으로 시간복잡도 측정 대부분의 알고리즘은 빅-오메가로 시간복잡도를 측정했을 때 만족할만한 결과가 나오기 때문에 실제로 잘 쓰이지 않음 특정 배열을 탐색하는 알고리즘에서 찾고자하는 값이 첫번째로 있을 경우 |
평균의 경우(빅-세타) | 평균적인 상황을 기준으로 시간복잡도를 측정 평균적인 상황이 무엇인지에 대한 문제가 발생 알고리즘이 복잡할 경우 평균적인 상황을 구하기가 쉽지 않음 |
최악의 경우(빅-오) | 최악의 상황을 기준으로 시간복잡도를 측정 최악의 상황을 기준으로 측정하면 입력 데이터의 개수가 많더라도 이정도의 성능은 보장한다는 뜻이 됨 대부분 알고리즘의 시간복잡도를 표현할 때 빅-오 로 표현함특정 배열에서 찾고자하는 값이 없을 경우 |
빅-오(Big-O) 표기법
- 시간복잡도를 표현한 다항식에서
최고차항의 차수
가빅-오
가 된다. 100n^3 + 999999n^2 + 10
에서빅-오
표기법을 이용하면O(n^3)
이 된다.n
의 값이 크면 클수록100n^3
과999999n^2
의 차이가 발생하게 된다.999999n^2
도 충분히 큰 수이지만 제외한 이유는 데이터의 증가에 따른 시간의 증가 정도를 표현하기 때문이다.
출처 및 참고사이트
- 참고사이트
- 윤성우의 열혈 자료구조
공간복잡도 (Space Complexity)
- 알고리즘을 수행할 때 필요한
메모리의 총량
을 의미한다. Space Complexity = Auxiliary Space + Input Size Space
Auxiliary Space
는 알고리즘을 실행하면서 필요한 임시변수 등을 의미한다.Input Size
는 알고리즘에 전달되는 파라미터 값이나 문제해결을 하는데 사용되는 변수를 의미한다.
프로그램의 메모리 사용
- 프로그램이 메모리를 사용할 때는 아래와 같다.
- 프로그램의 명령어들
- 컴파일러에 의해 컴파일된 명령어 mov, sub, …
- 환경적인 부분
- A함수에서 B함수를 호출하면 A함수의 다음 위치 및 A함수에서 사용된 변수값들을 스택에 PUSH하고 B함수가 종료되면 A함수의 변수값들을 다시 POP해서 원래 내용대로 돌아오는 행위들
- 데이터 공간
- 변수 또는 상수의 메모리 양
- 알고리즘에서 공간복잡도를 구할때는 보통
데이터 공간
을 이용해 계산한다.
Comments powered by Disqus.