algorithm - 大 O 表示法:内部具有 O(1) 操作的 For 循环
问题描述
我正在努力更好地理解大 O 符号,并在课堂上被这个问题难住了。
如果我有一个迭代次数恒定的 for 循环,它在每次迭代时简单地在控制台上打印一些东西:
for(int i=1; i<10; i++)
{
cout << "Hello!" << endl;
}
这段代码的大 O 表示法是什么?写入控制台的行需要 1 个单位的时间,我会将其乘以它的执行次数 - 在本例中为 10 - 所以我会得到 O(10)。然而,这只是减少到 O(1)。
这是正确的分析吗?
解决方案
即使是这样的循环:
for (int i = 0; i < 1000000; i++) {
cout << i << '\n';
}
从技术上讲,它仍然是 O(1)。我不打算在这里讨论大 O 符号的正式定义。但简单来说,大 O 表示法衡量了运行时间相对于输入的增长速度。在这种情况下,无论输入是什么,理论上的运行时间都应该是相同的。(实际上甚至没有输入)。所以你的分析是正确的。
推荐阅读
- angular - *ngIf 到底在做什么?
- c++ - 如何从基类动态创建和使用派生类?
- python-3.x - 使用 python 和 boto 按实例列出所有 T2 实例类型和 cpucredits
- java - 带有 Google Play 服务登录的 Libgdx
- html - 只有我导航栏中的最后一个链接有效,其余链接甚至在悬停时都不会改变
- java - Java Scanner 线程“主”异常错误
- python - Keras元素变量乘法错误?
- java - 自定义 FirebaseMessagingService 被忽略
- d3.js - d3-force 使节点在位置更新时移动得更慢
- android - 用于底部应用栏的样式工具栏