0
이 알고리즘의 복잡도는 얼마이며 그 이유는 무엇입니까?설명과 함께 다음 코드의 시간 복잡성?
int count = 0;
for (int i = N; i > 0; i /= 2) {
for (int j = 0; j < i; j++) {
count += 1;
}
}
정답은 O (n)이지만 O (nlogn)를 얻습니다. 아무도 왜 O (n)인지 말해 줄 수 있습니까?
시도한 적이 있습니까? 어디서 갇혀 있고 왜 그런지 설명해주십시오. 이것은 숙제 서비스가 아닙니다. – 4castle
네, 그랬습니다. 문제는 외부 루프가 O (logn)를 실행하고 내부 루프가 외부 루프까지 실행된다는 것입니다. 그래서, 그것은 O (nlogn)이어야합니다. 하지만 O (n)으로 줄일 수있을 것 같습니다. 그래서 저는 수학적으로 어떻게 알고 싶습니까? –
예, O (nlogn) 여야합니다. 하지만 대답은 O (n)입니다. 그래서, 어때요? –