2016-08-22 2 views
0

어떻게이 시간 복잡성을 계산합니까?시간 복잡도 (중첩 루프)

int count=0; 

for (int i=1 ; i < n; i*=4) 

    for (int j=1;j<=n;j++) 

       count++; 
+1

n*(log_4(n)+1) 배 내부 루프 반복을 제공합니다. 또한 도움을 요청했지만 정확히 어디에서 붙어 있는지 설명하지 않았습니다. 기본적으로 숙제를 주셨습니다. –

+0

코드 스 니펫에서 T (n)을 얻는 방법을 찾으려고합니다. t (n) = O (n^2) 또는 O (log (n))일까요? 그 숙제가 아닙니다. 과거의 테스트에서 나온 질문. 그리고 실제로 그것을 이해하는 데 문제가있다 – WWBM

+0

왜 그 중 하나가 될 것이라고 생각합니까? 다시 말하지만, 당신이 그것을 이해하는 방법을 설명하고 당신이 혼동스러워하는 부분을 매우 구체적으로 설명해야합니다. –

답변

6

TL; DR은 : 게시 된 코드의 복잡성은 다음과 같습니다

O(nlogn)가의 안쪽에서 바깥을 분석해 보겠습니다. 내부 루프는 i의 각 값에 대해 정확히 n 번 반복됩니다.

외부 루프는 반복하고 i < ni은 매번 4을 곱합니다. 즉, 첫 번째 반복 후 i=1을 입력 한 다음 i=4, i=16, i=64, ....을 입력하고 k'th을 입력 한 다음 i = 4^(k-1)을 입력합니다.

i >= n 
4^(k-1) >= n 
log_4(4^(k-1)) >= log_4(n) 
k-1 >= log_4(n). 

이 외부 루프는 log_4(n) + 1를 반복 의미 :이 의미
, 당신은 때 중지합니다. 모두 함께 합산

당신에게 줄의 코드 당신의 부부를 포맷하는 시간을 적어도 O(nlogn)

+0

정말 고마워! 솔직히 훨씬 더 의미가 있습니다! – WWBM