通过计算步数来测量算法的运行时遇到问题

时间:2014-01-17 04:19:06

标签: c++ algorithm

我在计算由以下嵌套循环组成的算法的步骤时遇到了一些麻烦:

for(int i=1; i <= N; i++) 
       for(int j=1; j <= i; j++) 
             for(int k=1; k <= i*log(j); k++) 
                  x=i+j+k;

我需要计算n = 10,20,40,100,200,400,1000,2000,4000,10000的运行时间,非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

这会计算循环中“步数”的数量:

int steps = 0;
for(int i=1; i <= N; i++) {
    for(int j=1; j <= i; j++) {
         for(int k=1; k <= i*log(j); k++) {
              steps++;
              x=i+j+k;
         }
    }
}

如果这就是你想要的,那么这个实际上就是它了:

time_t start = time(0);
for(int i=1; i <= N; i++) 
    for(int j=1; j <= i; j++) 
        for(int k=1; k <= i*log(j); k++) 
            x=i+j+k;
time_t end = time(0);

time_t timeTaken = end - start;

如果您需要更高的精度,请查找高精度时钟

答案 1 :(得分:1)

只需在程序中将N的值设置为20(或您需要的其他值),并且不使用任何I / O函数(cout / cin),并且在执行for循环后,程序将结束并且cmd将报告执行时间。