本文主要是介绍1.1-时间记录以及多项式的秦九韶公式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第一个fx是多项式的一般式,第二个是秦九韶公式。。
秦九韶公式效率更高,更快。
接下来说一下ctime的计时工具:
ctime里定义的CLK_TCK,其值每个电脑不一样,我的电脑输出它后显示1000;
clock_t start,stop; clock_t这个是数据类型,定义了两个变量用来存储起始时间和终止时间。
timee=((double)(stop-start))/CLK_TCK; 终点减去起点转换为double再除以CLK_TCK将其转换为秒数。
start=clock();//计算从main函数到当前的时间
stop=clock();//计算main函数到当前的时间
clock()函数在ctime头文件中定义。
注意:计算函数运行时间最好将函数放在start和stop之间。
输出时间是最好%e,用科学计数法表示。若输出结果为零,是因为时间实在太短,介意将其放入循环重复执行,最后再除以循环次数即可。。
#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#include <queue>
#include <ctime>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long ll;
#define maxn 10005
#define mod 7654321//普通算法
double f(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 ff(int n,double a[],double x)
{double p=a[n];for(int i=n;i>0;i--){p=a[i-1]+x*p;}return p;
}
//clock()函数 头文件为ctime
//clock_t是clock()函数的类型 start和stop是该类型的两个变量
clock_t start,stop;
//存储秒数
double timee;int main()
{//在start和stop之间放函数测时间double a[101];double x=1.5;for(int i=0;i<=100;i++){a[i]=double(i);}start=clock();//计算从main函数到当前的时间for(int i=0;i<1e7;i++)f(100,a,x);stop=clock();//计算main函数到当前的时间timee=((double)(stop-start))/CLK_TCK;//计算秒数 ctime里定义的CLK_TCK//cout<<CLK_TCK<<endl;printf("ticks=%.6lf\n",(double)(stop-start));printf("timee=%6.2e\n",timee);start=clock();for(int i=0;i<1e7;i++)ff(100,a,x);stop=clock();timee=((double)(stop-start))/CLK_TCK/1e7;printf("ticks=%.6lf\n",(double)(stop-start));printf("timee=%6.2e\n",timee);return 0;
}
这篇关于1.1-时间记录以及多项式的秦九韶公式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!