【发布时间】:2020-10-13 10:23:15
【问题描述】:
众所周知,while 循环(例如:while(n--))或 for 循环(例如:for(i=0; i<n; i++))的执行时间取决于变量 n,即O(n)。此外,根据在线判断,10^7 次操作 ≈ 1s。
但是我尝试用很少的操作为n > 10^9 执行一个while循环和一个for循环,它似乎在1秒内很容易运行。我很好奇为什么会这样?
#include使用命名空间标准; #define ll long long 诠释主要(){ ll t = 1e18; ll cnt = 0; 而(t--){ cnt++; } cout
【问题讨论】:
-
时间复杂度不变,保持O(n)。但是 CPU 可能会缓存指令,因此会“非常快”地执行它们。或者编译器已经优化了整个循环,只分配了
cnt= 1e18; -
条件
10^7 operations ≈ 1s永远不会是静态的,并且在不同平台上有所不同
标签: c++