time-complexity - 计算函数 f2 的时间和空间复杂度
问题描述
我有这个功能,我正在尝试计算时间和空间复杂度,我得到了答案,但我不确定它是否正确,我想知道这是否正确
void f1(int n)
{
int i,j,k=0;
for(int i=n/2; i<=n; i++)
{
for(int j=2; j<=i; j*=2)
{
k+=n;
}
}
free(malloc(k));
}
我的结果:
对于外部 for 循环,它非常简单 O(n)。
对于内部循环,我们每次迭代都有 log((n/2)+i),所以基本上每次迭代都有 log(n)。
所以总时间复杂度是 O(n*log(n))
对于空间复杂度,只要 k 接收到它的最终值,它就是 O(k),因为 k 的最终值是 k+nn log(n) 次,所以在所有迭代之后,我们有 k=n^2 log(n),所以空间复杂度为 O((n^2)*log(n))。
这个对吗?
解决方案
推荐阅读
- jquery - 如何在动态添加的元素上应用 jquery 插件
- c - 将数组分配给具有复杂情况的指针
- python - 如何从单个 setup.py 构建多个轮文件?
- numpy - ValueError:int() 的无效文字,基数为 10:'O'
- javascript - 如何设置员工明天休假的详细信息-react js
- ios - 有些图像未在 react-native-fastimage 中显示
- java - 方法定义问题 Java
- python - how can I connect the coding with database
- .net-core - 如何在 .net 核心应用程序中解密 access_token
- python - Python 字符串访问