十一十a 2021-09-10 11:33 采纳率: 100%
浏览 30
已结题

测试秦九韶和直接算法的效率,运行结果不是相差一个数量级

刚学数据结构,老师让测试多项式计算秦九韶算法与直接算法的效率差别,按理说,两者相差一个数量级,但是我试了好久,我的运行结果只相差4-5倍,不知道源代码哪里错了,
#include <stdio.h>
#include <time.h>
#include <math.h>
clock_t start,stop;
double duration;
#define MAXN 10
#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[n];
for(i=n;i>0;i--)
p=a[i-1]+x*p;
return p;}
void run(double(f)(int,double,double),double a[], int case_n)
{
int i;

start=clock();
for(i=0;i<MAXK;i++)
(*f)(MAXN-1,a,1.1);
stop=clock();

duration =((double)(stop-start))/CLK_TCK/MAXK;

printf("ticks%d = %f\n",case_n,(double)(stop-start));
printf("duration%d = %6.2e\n",case_n,duration);}
int main(){
int i;
double a[MAXN];
for(i=0;i<MAXN;i++) a[i]=(double)i;
run(f1,a,1);
run(f2,a,2);
return 0;
}
我的运行结果

img

  • 写回答

1条回答 默认 最新

  • joel_1993 2021-09-10 11:46
    关注

    你把N弄大一点,时间上差异就会显现出来,还有量级这种东西,5倍时间和10倍时间都是可以接受的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月7日
  • 已采纳回答 9月29日
  • 修改了问题 9月10日
  • 创建了问题 9月10日

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!