标签:ima 效率 一个 改进 fan img com inf 高效
例:y=a0 + a1*x + a2*x^2 + .....+ an*x^n
设计算法,求出给定任意x,得到的y的值
第一种思路,通过循环,依次相加
代码如下
double myfction(int m, int a[],double x) //m表示多少个常数项,数组a接收存放常数项的数组,x存放指定的数据 { double p=0; int i; for (i = 0; i <= m - 1; i++) p = p + a[i]*pow(x, i); //累加求出最终值 return p; }
通过上面的代码确实得到了正确的结果,但是运行的时间,解决的效率非常低,我们可以这样改进
以四项为例,通过一层一层的提出x我们可以得到最后的这个样子,我们在由内向外的计算,然后得到最后答案
代码如下:
double myfction1(int m, int a[], double x)
{
double p=a[m-1];
int i;
for (i = m-1; i >0; i--)
{
p = a[i-1] + x * p;
}
return p;
}
实现同样的功能,下面这个算法比上面这个算法效率高很多
为了验证,我们可以通过clock()函数来得到运行这两个函数分别需要多少时间,来证明下面一个算法比上面一个算法效率更高
在解决问题的时候,为了更有高效率的执行,在设计算法的时候,需要去做出相应的化解,变形等等
标签:ima 效率 一个 改进 fan img com inf 高效
原文地址:https://www.cnblogs.com/hzb1224/p/11442171.html