算法运行超时预估算

我们知道算法超时评判一般会要求运行时间小于1秒。
所以我们怎么知道自己的算法是否超时了呢?

看个例子:

#include 
#include 
#include 
using namespace std;
int main()
{

clock_t startTime,endTime;
startTime = clock();//计时开始
//下句实例表示执行次数O(n),我们通过查看n=10000000清楚循环执行10的7次方,从而大概判断是否会超出竞赛要求时长。
for(int i=0;i<10000000;)i++; 

endTime = clock();//计时结束
cout<<"执行时间:"<<(double)(endTime-startTime)/CLOCKS_PER_SEC<<"s"<<endl; 
return 0;
}

我们看到for循环了10000次,循环中执行i++操作(我们也可以执行除打印输出的时间复杂度为O(1)的其他语句),那1秒能执行多少次这样的语句呢?
O(1)的范围比较难估算,但不会超过109
对应O(n)的范围为106 - 108

对应O(n2)的范围为103 - 104

对应O(n3)的范围为101 - 102。。。。。。

当我们了解了这些之后,就不难知道自己的算法是否会超时了。


感谢JeryDeak提示订正

你可能感兴趣的:(算法与数据结构的碰撞经典汇总,笔记,算法,超时,估算,运行效率)