포시코딩

이중 for문의 시간복잡도 본문

자료구조알고리즘/이론

이중 for문의 시간복잡도

포시 2022. 12. 12. 00:11
728x90

예제를 통해 이중 for문의 시간복잡도를 구해보자

algorithm sum(A, n):
  sum = 0			# 1번
  for i=0 to n-1 do		# n번
    for j=i to n-1 do		# 아래에서 설명
      sum += A[i] * A[j]	# 3번
  return sum

각 for문의 돌아간 횟수

i j
0 n
1 n-1
2 n-2
... ...
n-1 n-(n-1)=1

식으로 나타내기

for j=i to n-1 do
# 여기서 i가 n-1이라면 j=도 n-1이 되고 to n-1 즉, n-1이 n-1이 될 때 까지니까 한 번 돌게 된다.
# 규칙을 부여해서 찾는다면 n-(i의 시작 수)가 되니 n-(n-1)이 되어 n-n+1 즉, 1이 되는 방법도 있다.

결국 이중 for문의 횟수는 위 표의 j 밑에 있는 값들을 모두 더한게 된다.

거꾸로 1부터 ... n-2 + n-1 + n 이 되니 결국

= 1+2+...+n 이 되는거나 마찬가지

 

여기서 1부터 n까지의 합에 대한 공식을 적용하면 다음과 같다.

n(n+1) / 2

 

정리

결과적으로 시간복잡도는 T(n) = 3n2/2 + 3n/2 + 1이 된다.

728x90