알고리즘 복잡도

LJM·2022년 12월 16일
0

TodayILearned

목록 보기
6/7

코드반복문이 시간 복잡도(수행시간)를 좌우함
빅오표기법: 알고리즘 최악의 실행 시간 표기
오메가 표기법: 최상의 실행시간 표기
세타 표기법: 평균실행시간 표기

n : 무한대의 입력의미한다

O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(2^n) < O(n!)
빅오표기법 걸리는 시간 순서는 로그의 값을 구하는 방법만 알면 헷갈리지 않는다.


로그의 밑이 생략된경우 2라는 사실!!

n을 2로 나눈 횟수를 구하면 x 를 구할 수 있다는 사실을 잊지말자!

만약 n이 8이라고 가정한다면 순서를 명확하게 알 수 있다
O(1) < O(3) < O(8) < O(3*8) < O(8^2) < O(2^8) < O(8!)

8! 은 팩토리얼로서 1부터~8까지 숫자들을 곱하는것이다.

O(1) : 무조건 상수회 실행한다 n이 어떤값이든
if(n>10)
{ System.out.println(n); }

O(logn) : 로그의 밑은 생략된경우 2이다. 만약 log8 이라면 3이다

O(n) : 아래 코드에서 수행횟수는 10n 이다 n이 무한대로 가면 10n 이나 n 이나 차이가 없다고 보고 O(n) 으로 표기한다

for(int i = 0; i < 10; ++i)
	for(int j = 0; j < n; ++j)

O(nlogn) :

O(n^2) : 아래 코드에서 수행횟수는 10n^2 이다 n이 무한대로 가면 10n^2 이나 n^2 이나 차이가 없다고 보고 O(n^2) 으로 표기한다

for(int i = 0; i < 10; ++i)
	for(int j = 0; j < n; ++j)
		for(int k = 0; k < n; ++k)

시간 복잡도가 2n^2 + 3n 이라면 가장큰 차수인 2n^2 에서 상수 2를 뺀 n^2 만 표기한다 O(n^2)

profile
게임개발자 백엔드개발자

0개의 댓글

관련 채용 정보