当前位置: 首页 > 知识库问答 >
问题:

少运算循环的时间复杂度

狄珂
2023-03-14
#include <iostream>
using namespace std;
#define ll long long 
int main(){
    ll t = 1e18;
    ll cnt = 0;
    while(t--){
        cnt++;
    }
    cout << cnt << '\n';
    cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
}

Output: 1000000000000000000
Time elapsed: 0.003174 s.

共有1个答案

国晟睿
2023-03-14

你写的代码不是给你的cpu的指令,而是给你的编译器生成给你的cpu的指令的指令。在这个特定的情况下,很容易看到

long long  t = 1e18;
long long cnt = 0;
while(t--){
    cnt++;
}
cout << cnt << '\n';

可替换为

long long cnt = 1e18;
cout << cnt << '\n';

而不改变程序的可观察行为。

 类似资料:
  • 我在计算时间复杂度时遇到困难,尤其是while循环: 示例1: 时间复杂度是O(n x 3 x r)还是O(3)? 示例 2: 时间复杂度会是O(3 x n)还是O(3)?

  • 我很难理解算法分析,尤其是下面的例子: 所以我的理解是,外循环是,当我乘以一个常量时,我不确定是否有任何区别。 不过,最让我困惑的是内部循环。我认为它是,因为j被常数递减,但我不确定和

  • 如何计算多个嵌套循环的时间复杂度?我已经完成了这段代码,但对它的时间复杂度感到困惑!

  • 我在一个非常受欢迎的网站上看了一篇关于循环时间复杂度分析的文章(链接如下),根据这篇文章,第一和第二个循环的时间复杂度分别是O(1)和O(n)。但是我认为两个循环的时间复杂度是相同的O(n) 我的推理是:`c*n=O(n) 看完下面的答案后,我的推理是错误的,因为没有变化的输入n。循环运行是固定的-c次。因此,无论输入值n是多少,循环都将以恒定时间运行。so(1)复杂性 我的推理: 我错过什么了吗

  • 这段代码的时间复杂度是多少?外循环运行n次,但我不确定内循环。如果内环对于i的每个值一直运行到n,它能是O(n^2)吗?