1.시간 복잡도 빅오 표기법 O(N)
2021. 11. 5. 00:17ㆍ알고리즘
728x90
시간 복잡도(time complexity)란 가장 널리 사용되고 있는 알고리즘의 수행 시간 기준으로, 알고리즘이 실행되는 동안 ㄴ수행하는 기본적인 연산의 수를 입력 크기에 대한 함수로 표한한 것이다.
그리고 표현을 할때 O표기를 하는데
역기서 O표기를 할때 변수의 차수가 큰 것을 따라간다.
n^2+5n => O(n^2)
n^3+100n^2 => O(n^3)
n^2*m+m^2*n+3 => O(n^2*m+m^2*n)
근데 시간복잡도가 낮다고 해서 언제나 더 빠르게 작동하는 것은 아니다.
밑에 그래프를 보면 알 수 있듯이. 복잡도가 낮다고해서 더 빠르게 작동하는 것이 아니라
일정 구간 이상부터 빠르게 작동하는 것을 알 수 있다.
우리가 1부터 n까지의 합을 구할 때
int sum=0;
for(int i=0; i <n; i++){
sum=sum+i;
}
printf("합:%d", sum);
시간 복잡도는 O(n)
그렇지만 n까지의 합공 식이 n*(n+1)/2 인 것을 알고
for문을 지우고 sum=n*(n+1)/2 이렇게 쓰면 시간 복잡도는 O(1)이 된다.
공간 복잡도도 설명해주고 싶은데 시간 복잡도랑 거의 같아서 어떻게 설명해야 될지 모르겠어가지고
설명을 못하겠습니다. 그리고 실력이 뭘 알려줄 실력이 아니라서 이거 하면서 정리하는 거라 ㅎㅎ
참고가 됐다면 감사합니다. ㅎㅎ
728x90
'알고리즘' 카테고리의 다른 글
[C++][STL] map 사용법 정리 (0) | 2022.05.30 |
---|---|
소수구하기 에라토스테네스의 체 (0) | 2022.05.19 |
최대 공약수, 최소 공배수 구하는 문제 (0) | 2022.05.19 |
백준 1764 듣보잡 C++ (0) | 2022.05.19 |
팰린드롬(회전문 문제) (0) | 2022.03.23 |