나는 (하나라도있는 경우) 루프의 이러한 종류의 기술 용어 확실하지 않다, 그래서 예를 들어 제공 할 것입니다 :이 예에서서로 영향을 미치는 루프 런타임을 어떻게 찾을 수 있습니까?
x=0
i = 1
while(i<n)
for(j=1 to n/i)
x = x + (i-j)
i*=2
return(x)
을, while 루프 직접 배의 수를 변화 어떤 이유로 나를 던지고있는 루프 실행을 위해
일반적으로 줄 단위로 이동하여 각 줄이 몇 번 실행되는지 확인하지만 횟수가 변경되기 때문에 합계를 시도했지만 조금 잃어버린 ...이 유형의 문제를 해결하기 위해 어떤 방법으로 단계적으로 될 것입니까? 당신이 알고있는 경우
주석에 답은 O (N),하지만 난 이런 짓을 할 때 내가 어떤 도움에 감사드립니다
(N) nlog있어, 이것은 또한 내 최종
에 대한 리뷰 기사입니다 이런 종류의 연습 문제를 발견하기에 좋은 곳이라면 고맙겠습니다!
는
답장을 보내 주셔서 감사합니다. 그래서 명확히하기 위해, i가 기하 급수적으로 (특히 2의 배수로, 2^j는 j가 반복 횟수 임) 증가하기 때문에 while 루프는 lgn 시간을 실행합니다. 내부 루프는 본질적으로 n/2^j의 합계이기 때문에 O (n)은 그대로두고 일정 시간 n에 수렴하는 기하 급수가됩니까? – ChrisM
네, 그렇습니다. –
아, 그건 완벽하게 이해합니다, 고마워요! 나는 2^j로 설정하는 것을 고려하지 않았다. 그래서 나는 길을 잃고 있었다. – ChrisM