在分析一个程序算法时间复杂度时,可以使用统计程序或程序片段的计算时间有助于理解程序性质。许多语言或系统都提供了内部计时功能。有关c语言的如下:
有关函数在time.h头文件中,在程序头部写成:#include<time.h>
在程序里计时,通常写表达式:clock()/CLOCKS_PER_SEC,得到从程序开始到表达式求值时所经历的秒数。
下面通过斐波那契数列来展示使用:
#include<stdio.h>
#include<time.h>
long long fib (int n){
return n<=2?1:fib(n-1)+fib(n-2);
}
long long fib1(int n){
long long f1=1,f2=1,f3;
if(n<=2)
return 1;
f3=f2+f1;
for(int i=3;i<n;i++)
{
f1=f2;
f2=f3;
f3=f1+f2;
}
return f3;
}
int main()
{
double x;
for(int n=45;n<=48;n++)
{
x=clock()/CLOCKS_PER_SEC;
printf("fib(%d)=%I64d\t",n,fib(n));
x=clock()/CLOCKS_PER_SEC-x;
printf("Timing fib(%d):%f.\n",n,x);
x=clock()/CLOCKS_PER_SEC;
printf("fib1(%d)=%I64d\t",n,fib1(n));
x=clock()/CLOCKS_PER_SEC-x;
printf("Timing fib1(%d):%f.\n\n",n,x);
}
return 0;
}