一、Clock()
clock():捕捉从程序开始运行到clock()被调用时所耗费的时间。这个 时间单位是clock tick,即“时钟打点”;
常数CLK_TCK(或CLOCKS_PER_SEC):机器时钟每秒所走的时钟打点数;
程序运行时间 = (结束运行的clock() - 开始运行时的clock() / CLK_TCK;
例:
#include <stdio.h>
#include <time.h>
clock_t start, stop; //clock_t是clock()函数返回的变量类型
double duration; //记录被测函数运行时间,以秒为单位
int main ()
{
//不在测试范围内的准备工作写在clock()调用之前
start = clock(); //开始计时
MyFunction(); //把被测函数加在这里
stop = clock(); //停止计时
duration = ((double)(stop - start))/CLK_TCK; //计算运行时间
//其他不在测试范围的处理写在后面,例如输出duration的值
return 0;
}
二、抽象数据类型
数据类型:对象集,操作集
三、复杂度
上界: ,一般取最小上界; 下界:
,一般取最大下界
时间复杂度大小比较:
计算时间复杂度小窍门:
- 若两段算法分别有复杂度 T1(n) = O(f1(n)) 和 T2(n) = O(f2(n)),则: T1(n) + T2(n) = max(O(f1(n)), O(f2(n)) ) T1(n) * T2(n) = O(f1(n) * f2(n) )
- 若T(n)是关于n的k阶多项式,那么T(n)= Θ(
)
- 一个for循环的时间复杂度等于循环次数乘以循环体 代码的复杂度
- if-else 结构的复杂度取决于if的条件判断复杂度 和两个分枝部分的复杂度,总体复杂度取三者中最大