algorithm - 具有常数的嵌套循环的时间复杂度
问题描述
如果我们有一个类似下面的循环并且我们知道 c=5:
for ( int i = 0 ; i < c; i++ )
{
// some logic
}
我们得到 O(1)。
如果我们有另一个循环:
for ( int i = 0 ; i < n; i++ )
{
// some logic
}
我们得到 O(n),
但是如果我们有嵌套循环会发生什么:
for ( int i = 0 ; i < n; i++ )
{
for ( int j = 0 ; j < c; j++ )
{
// some logic
}
}
那会是什么时间复杂度?
解决方案
如果两者都是 O(n),您将执行内部 O(n) n 次,给出 O(n*n) = O(n^2)。因为一个是 O(n),另一个是 O(1),所以你执行 O(1) n 次,得到 O(n*1) = O(n)
因此,时间复杂度为 O(n)
推荐阅读
- youtube-dl - youtube-dl mp4 或 mkv 和 720p 或更低
- python - 无法从网页中提取连接到“查看全部”按钮的链接
- haskell - 我们自己的数据类型的最大值
- amazon-web-services - CodePipeline、CodeBuild、CloudFormation、Lambda:在单个构建中构建多个 lambda 并正确分配其代码
- c# - 我的图片框跟随光标,但光标未居中
- python-3.x - 使用 Python 修复文件名和更新引用
- angularjs - “http://localhost:4200”已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头
- mysql - Laravel 中的查询构建器 GROUP BY、HAVING、COUNT
- javascript - 来自表格内部 html 的 php 的 javascript post 变量的 Ajax 调用
- time-series - 聚类“访问时间”数据序列