C语言程序的运行时间计算小框架

最近在学习算法,可谓是深深的感觉到了算法的美妙之处,不同的数据结构适用于不同的算法,利用计算机的机器思维,三者结合可真是奥妙无穷。比较算法的好坏当然要计算算法的运行时间,因此我就弄了一个计算程序运行时间小框架;
具体代码如下:

#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即可得到实际的秒数。

发布了8 篇原创文章 · 获赞 8 · 访问量 928

猜你喜欢

转载自blog.csdn.net/weixin_44225901/article/details/104294083