C/C++:记录函数的运行时间,粗略估算时间复杂度
/*测试函数运行时间*/
#include<stdio.h>
#include<time.h> //利用clock()函数进行计时,他是记录从mian函数开始的时钟打点数
#define MAXK 1e7 //被测试函数被调用的次数
clock_t start, stop; //clock_t是clock()函数返回的变量类型
double duration; //记录被测试函数运行的时间,以秒为单位
int myFunction(int n);
int main(){
start = clock();
for (int i=0; i<MAXK; i++)
myFunction(1000);
stop = clock();
duration =((double)(stop - start))/CLK_TCK/MAXK; //CLK_TCK:每秒机器时钟所走的时钟打点
printf("ticks = %f\n", (double)(stop - start));
printf("duration = %6.2e\n", duration);
return 0;
}
/*计算多项式的值1+2+3+++n*/
int myFunction(int n){
int sum = 0;
for(int i=0; i<n; i++){
sum += i;
}
return sum;
}
补充:
1.记录函数运行时间时,若函数运行时间过短,可将函数多次重复运行
2.一个for循环的时间复杂度等于循环次数乘以循环体代码的复杂度
3.if-else 结构的复杂度取决于if的条件判断复杂度和两个分枝部分的复杂度,总体复杂度取三者中最大
参考:浙江大学国家精品课程《数据结构》https://www.icourse163.org/learn/ZJU-93001?tid=1003013004#/learn/announce