gpt4 book ai didi

c - 大O小澄清

转载 作者:太空狗 更新时间:2023-10-29 16:27:35 25 4
gpt4 key购买 nike

就时间复杂度而言,O(log(log(n))) 实际上只是 O(log(n)) 吗?
您是否同意此函数 g() 的时间复杂度为 O(log(log(n)))

int f(int n) {
if (n <= 1)
return 0;
return f(n/2) + 1;
}

int g(int n) {
int m = f(f(n));
int i;
int x = 0;
for (i = 0; i < m; i++) {
x += i * i;
}
return m;
}

最佳答案

函数 f(n) 通过重复除以 2 计算以 2 为底的 n 的对数。它迭代 log2(n) 次。

根据自己的结果调用它确实会返回 log2(log2(n)) additional log2(log2(n)) 次迭代。到目前为止,复杂度为 O(log(N)) + O(log(log(N))。第一项支配第二项,整体复杂度为 O(log(N)) .

最后的循环迭代log2(log2(n))次,最后一个阶段的时间复杂度是O (log(log(N)),初始相前可忽略。

请注意,由于 x 未在函数 g 结束之前使用,因此不需要对其进行计算,编译器可能会将此循环优化为无。

总体时间复杂度为 O(log(N)),这与 O(log(log(N))相同。

关于c - 大O小澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35404667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com