C 如何找到总运行时间?
如何找到以下代码段的总体运行时间C 如何找到总运行时间?,c,C,如何找到以下代码段的总体运行时间 for (i = 0; i < n; i++) for (j = 0; j < n; j++) for (k = 1; k < n; k = k * 2) printf("Test") for (i = 0; i < n ^ 2; i++) for (j = 1; j < n; j = j * 2) printf("Test") 如何找到以下代码段的总体运行
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
for (k = 1; k < n; k = k * 2)
printf("Test")
for (i = 0; i < n ^ 2; i++)
for (j = 1; j < n; j = j * 2)
printf("Test")
如何找到以下代码段的总体运行时间
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
for (k = 1; k < n; k = k * 2)
printf("Test")
for (i = 0; i < n ^ 2; i++)
for (j = 1; j < n; j = j * 2)
printf("Test")
forj=0;j在程序开始和结束时设置时钟,并打印两个值之间的差值 假设以下示例:
#include <stdio.h>
#include <time.h>
int main(void) {
clock_t begin = clock();
// program here
clock_t end = clock();
double spent = (double) (end - begin) / CLOCKS_PER_SEC;
printf("%lf\n", spent); // to get the total execution time
}
两个代码片段中的内部循环是相同的:它打印测试日志2n次 在第一种情况下,该内部循环执行n*n+1/2次 假设符号n^2实际上表示n*n,则在第二种情况下,内部循环执行n*n 在这两种情况下,时间复杂度是相同的:On2.logn 运行时间可以与迭代次数成比例,第一种情况为n*n+1/2*log2n,第二种情况为n*n*log2n,其中log2n是基2中的整数log,即:n中最高有效位的位置 实际上,您应该使用时钟或gettimeofday在目标系统上测量运行时间。您确定n^2吗?也许是n*n?我通常使用时钟在测试代码前后制作时间戳。如果执行时间太短而没有意义,我会将要测试的代码放在另一个循环中。