어떻게이 시간 복잡성을 계산합니까?시간 복잡도 (중첩 루프)
int count=0;
for (int i=1 ; i < n; i*=4)
for (int j=1;j<=n;j++)
count++;
어떻게이 시간 복잡성을 계산합니까?시간 복잡도 (중첩 루프)
int count=0;
for (int i=1 ; i < n; i*=4)
for (int j=1;j<=n;j++)
count++;
TL; DR은 : 게시 된 코드의 복잡성은 다음과 같습니다
O(nlogn)
가의 안쪽에서 바깥을 분석해 보겠습니다. 내부 루프는 i
의 각 값에 대해 정확히 n
번 반복됩니다.
외부 루프는 반복하고 i < n
및 i
은 매번 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)
정말 고마워! 솔직히 훨씬 더 의미가 있습니다! – WWBM
에
n*(log_4(n)+1)
배 내부 루프 반복을 제공합니다. 또한 도움을 요청했지만 정확히 어디에서 붙어 있는지 설명하지 않았습니다. 기본적으로 숙제를 주셨습니다. –코드 스 니펫에서 T (n)을 얻는 방법을 찾으려고합니다. t (n) = O (n^2) 또는 O (log (n))일까요? 그 숙제가 아닙니다. 과거의 테스트에서 나온 질문. 그리고 실제로 그것을 이해하는 데 문제가있다 – WWBM
왜 그 중 하나가 될 것이라고 생각합니까? 다시 말하지만, 당신이 그것을 이해하는 방법을 설명하고 당신이 혼동스러워하는 부분을 매우 구체적으로 설명해야합니다. –