C语言程序的运行时间计算小框架
程序员文章站
2022-05-26 22:29:45
...
最近在学习算法,可谓是深深的感觉到了算法的美妙之处,不同的数据结构适用于不同的算法,利用计算机的机器思维,三者结合可真是奥妙无穷。比较算法的好坏当然要计算算法的运行时间,因此我就弄了一个计算程序运行时间小框架;
具体代码如下:
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void hannuota(int n, char x, char y, char z)
{
if (1 == n)
printf("%c->%c\n", x, z);
else
{
hannuota(n - 1, x, z, y);
printf("%c->%c\n", x, z);
hannuota(n - 1, y, x, z);
}
}
int main()
{
clock_t start, finish;//time.h头文件定义的数据类型
int m;
printf("请输入汉诺塔层数:\n");
scanf("%d", &m);
printf("路径为:\n");
start = clock();//clock()函数为time.h中声明
hannuota(m,'A','B','C');//算法运行的代码
finish = clock();
printf("\n本次计算一共耗时:%f秒\n\n", (double)(finish - start) / CLOCKS_PER_SEC);
system("pause");
return 0;
如上是以汉诺塔递归算法为演示,同样的框架可以适用于各类算法,想要知道算法的运行时间就可以直接复制粘贴这个小框架拿来即用。
在这里说明一下,clock函数返回的是cpu时间,并不是秒数,真正的一秒钟可能包含若干个CPU时间,这个值通常是由宏CLOCKS_PER_SEC来定义,表示一秒中有CLOCKS_PER_SEC这么多个cpu时间;
不同的编译器可能不同,比如,linux C中,它是1000000,在VC6中,它是1000,你用(finish-start)除以CLOCKS_PER_SEC即可得到实际的秒数。