在程序设计中,有些问题可能有不同地解决方法,对应的,也就编写出不同的程序。那么,如何衡量各个算法之间的好坏呢?每个算法的衡量需要综合很多方面,比如运行时间上,或者所占用内存空间上等。
4 u8 b( K1 f0 Y5 ?3 F0 X, U这篇笔记中,我们关注的是运行时间。对于运行时间(专业一点的词就是时间复杂度),通常我们可以粗略地通过循环体的循环次数来判断。
( Z6 z9 W; o, U; P6 K此处,我们通过一小段程序测试我们程序块的运行时间(Windows平台下)。测试代码如下:
- ?0 b/ h3 R0 o) e( a( T#include <stdio.h>
#include <time.h> // 用到clock()函数
int main(void)
{
int StartTime = 0, EndTime = 0;
int Sum = 0;
int i = 0;
StartTime = clock(); // 计时开始
/* Start--要测试地程序 */
for (i = 0; i < 100; i++)
{
printf("%d ", i);
}
/* End */
EndTime = clock(); // 计时结束
printf("\n\nRunning Time:%dms\n", EndTime-StartTime);
return0;
} 程序执行结果为:
: g0 {4 c1 C8 J$ B8 J( _+ G
- ~9 n. _$ r2 r; c5 P( Y
time.h头文件里的clock()函数可获取当前的时间戳,我们在需要测试的程序块前后各获取一次时间戳,然后用后一次时间戳减去前一次时间戳就可得到该程序块的执行时间。当然,这也只是得到粗略的执行时间,因为只能精确到ms。 |