2016-08-12 2 views
-1

다음 코드 단편의 시간 복잡도와이를 계산하는 방법은 무엇입니까?다음 코드 단편의 시간 복잡도를 찾는 방법

function(int n){ 
     for(int i = 1 ; i<=n ; i++){ 
      for(int j=1 ; j<=n; j+=i){ 
       System.out.println("*"); 
     } 
    } 
+0

다른 사람들이 당신을 위해 숙제를하길 기대하기보다는 자신이 한 일을 구체적으로 보여줘야합니다. – ray

+0

Q :'다음 코드 스 니펫의 시간 복잡도를 찾는 법'A : 계산하여. (그리고 덜 트롤링 : ** 당신은 ** 그것이 무엇이라고 생각합니까?) – amit

+0

[빅 오의 복제본은 어떻게 계산합니까/대략입니까?] (http://stackoverflow.com/questions/3255/big-o) -0-do-do-you-calculate-approximate-it) – amit

답변

1

전체 작업을 생각해 봅시다. 주석에서 언급했듯이 내부 루프는 i = 1이면 n 번, i = 2 일 때는 n/2 번, i = 3 일 때는 n/3 번 (반올림 오류 무시)으로 실행됩니다. 이 수행 전체 작업을 의미

N + N/2 + N/3 + N/4 + ... + N/N

N = (1 + 2 + 1/3 + 1/4 + ... + 1/N)

괄호 안의 항은 nth harmonic number이고, n H 표시하므로 전체적인 일된 대략 N nH의 이다. H n = Θ (log n)이므로 총 작업 시간은 Θ (n log n)입니다.

+0

당신은 Hn = Θ (log n)에 대한 설명을 줄 수 있습니까? ??? – kverma28

+1

예! [이 슬라이드]의 슬라이드 107-115 (http://www.stanford.edu/class/archive/cs/cs161/cs161.1138/lectures/10/Slides10.pdf)를 확인하십시오. – templatetypedef

관련 문제