c - 如何计算这个函数的复杂度?
问题描述
我想知道内部 for 循环的时间复杂度是多少,是 sqrt(n) 还是 log(n)?
void foo(int n)
{
for (int i=0; i<n*n; ++i)
for (int j=1; j*j<n; j*=2)
printf("Hello there!\n");
}
解决方案
内部 for 循环中的 j 将取值 1,2,4,...2^t
同样根据给定的约束,2^2t = n
所以,t = (1/2)logn
因此内循环应该有时间复杂度 O(log(n))
推荐阅读
- scala - Scala:错误:重载方法值信息与 log4j 的替代品
- azure - 有没有办法跟踪 Cosmos DB 更改历史记录
- azure - Azure 数据工厂和 GraphDb
- ruby-on-rails - 模型 sanitize_forbidden_attributes rails 4 上的错误
- google-app-engine - 无法删除 GCP 项目。提示“项目服务未知错误”
- pandas - 数据包含给定 ID 的相同值。分组后,我希望得到 Pandas 数据框中的结果,每个 ID 只有一个条目
- design-patterns - 跟踪跨分布式/传统系统的数据流
- c - 如何检查矩阵在C中的行或列中是否具有相同的值
- php - PHP Excel 导入到 MYSQL 数据库在本地主机上工作正常,但在在线服务器上却不行
- swift - 任何人都可以帮助从 FirebaseDatabase 获得 2 级深度字典吗?