문제
34. 아래 중첩 루프의 시간 복잡도 T(n)은 얼마입니까? 모든 경우를 고려하면 너무 복잡하므로 n이 2의 거듭제곱이라고 가정할 수 있습니다.
즉, 양의 정수 k에 대해 n = 2^k입니다.
나는 = 엔; ( I >= 1 ) 동안 { j-i; 동안 ( j <= n ) { j = 2 * j; } 나는 = 나는 / 2; } |
답변
T(n) = O(n log n)
설명
외부 루프에서 i는 i를 1/2로 줄임으로써 log n번 반복되고 내부 루프에서는 j가 i에서 시작하여 2배 증가하므로 j가 log n번 반복됩니다.
내부 루프의 본체는 일정한 시간이 걸리므로(즉, 시간 복잡도 O(1)) 위 중첩 루프의 시간 복잡도 T(n)은 O(nlogn)입니다.
확인
ChatGPT 선생님께 물어보니…