计算多项式的值(秦九昭算法,clock()函数的使用)
2017-11-18 20:15
260 查看
/* clock()函数使用模板 clock():捕捉从程序开始运行到clock()被调用所消耗的时间。这个时间单位是clock tick。 常数CLK_TCK:机器时钟每秒所走的时钟打点数 clock_t是clock()函数返回的变量类型 duration记录被测函数运行时间,以秒为单位 #include <stdio.h> #include <time.h> clock_t start,stop; double duration; int main() { //不在测试范围内的准备工作写在clock()调用之前,例如输入处理之类 start=clock();//start存储从main函数开始被调用到clock()被调用所走的ticks Myfunction(); stop=clock();//stop存储从main函数开始被调用到这个clock()被调用所走的ticks duration=((double)(stop-start))/CLK_TCK; //其他不在测试范围内的处理写在后面,例如输出处理之类 return 0; } */ //假设多项式f(x)=0*x^0+1*x^1+2*x^2+...+9*x^9 #include <stdio.h> #include <time.h> #include <math.h> clock_t start,stop; double duration; #define MAXN 10//多项式最大项数,即多项式阶数+1 #define MAXK 1e7//被测函数最大重复调用次数 //一种比较慢的常规方法 double f1(int n,double a[],double x) { int i; double p=a[0]; for(i=1;i<=n;i++) p+=(a[i]*pow(x,i)); return p; } //秦九韶算法利用乘法结合律从内向外展开 double f2(int n,double a[],double x) { int i; double p=a ; for(i=n;i>0;i--) p=a[i-1]+x*p; return p; } //让被测函数重复运行充分多次,使得测出的总的时钟打点间隔充分长,最后计算平均每次运行的时间即可 int main() { int i; double a[MAXN];//存储多项式系数 for(int i=0;i<MAXN;i++) a[i]=(double)i; start=clock(); for(int i=0;i<MAXK;i++) //重复调用函数以获得充分多的时钟打点数 f1(MAXN-1,a,1.1); stop=clock(); duration=((double)(stop-start))/CLK_TCK/MAXK; printf("ticks1=%f\n",(double)(stop-start)); printf("duration1=%6.2e\n",duration); start=clock(); for(int i=0;i<MAXK;i++) f2(MAXN-1,a,1.1); stop=clock(); duration=((double)(stop-start))/CLK_TCK; printf("ticks2=%f\n",(double)(stop-start)); printf("duration2=%6.2e\n",duration); }
相关文章推荐
- 算法学习三:使用霍纳规则计算多项式
- SharePoint:在计算字段中使用Today, Me之类的函数的方法,有点搞笑,但是有效
- C# 中使用 MD5 算法计算 hash (哈希)值的四种方法
- 使用DATEDIFF函数计算时间差
- 使用泛型算法的例子, 使用了函数对象
- SIFT算法学习:特征提取函数的使用
- 使用STL中的泛型算法及函数对象
- 使用Hoare算法计算select[k]
- PinBlock 算法 使用ANSI x9.8计算
- symbian 时间使用和统计(计算)函数(类)运行时间
- 数学计算-多项式求值算法(一维,二维)
- Instr()函数的使用--计算字符串中出现某个字母或单词的个数
- 计算两个整数区间是否重叠的算法函数
- 遗传算法与直接搜索工具箱学习笔记 五-----使用GPS算法寻找一个函数的最小值
- 考虑使用函数对象代替函数作算法的参数(Effective STL条款46)
- Effective STL: Item 44:优先使用与泛型算法同名的成员函数
- LSH应用:根据现有数组去mongodb中去数组 然后使用LSH算法计算数组相识度
- [引用]SharePoint:在计算字段中使用Today, Me之类的函数的方法,有点搞笑,但是有效
- SIFT算法学习:特征提取函数的使用
- SharePoint列表计算栏的公式中,可是使用哪些函数?