十一十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日

悬赏问题

  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型
  • ¥15 深度学习中的画图问题