数据结构笔记--1.1.3关于算法效率 计算多项式值
2016-12-05 09:48
357 查看
秦九韶算法
f(x)=ax^n+a[n-1]x^(n-1)+…+a[1]x+a[0]
f(x)=(…((a
x+a[n-1])x+a[n-2])x+…+a[1])x+a[0].
clock() 计时函数的用法
#include "stdafx.h" #include <iostream> #include <time.h> clock_t start, stop; double duration; int main() { start = clock(); //myfunction(); stop = clock(); duration = ((double)(stop - start)) / CLK_TCK; std::cout<<duration; return 0; }
普通方法和秦九韶算法
#include "stdafx.h" #include <iostream> #include <time.h> #include <math.h> #define MAXK 1e7 //被测函数最大重复调用次数10的7次方 #define MAXN 10 double f1(int n, double a[], double x); double f2(int n, double a[], double x); clock_t start, stop; double duration = 0.0; 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)); //std::cout << p; //std::cout << std::endl; 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] + p*x;//i-1 //std::cout << p; //std::cout << std::endl; return p; } int main() { int i; double a[MAXN]; for (i = 0;i < MAXN;i++) a[i] = (double)i; start = clock(); //myfunction(); for (i = 0;i < MAXK;i++) f1(MAXN - 1, a, 1.1); stop = clock(); duration = ((double)(stop - start)) / CLK_TCK/MAXK; std::cout << "1=" << ((double)(stop - start)); std::cout << std::endl; std::cout <<"1="<< duration; std::cout << std::endl; start = clock(); //myfunction(); for (i = 0;i < MAXK;i++) f2(MAXN - 1, a, 1.1); stop = clock(); duration = ((double)(stop - start)) / CLK_TCK/MAXK; std::cout << "2=" << ((double)(stop - start)); std::cout << std::endl; std::cout << "2="<<duration; return 0; }
相差大约一个数量级
相关文章推荐
- [数据结构] 算法效率 以“计算多项式值”为例
- 写代码时候关于数据结构的考虑与算法效率的问题
- 数据结构学习笔记 --- 线性表 (一些常见的关于链表的算法和面试题)
- 【算法与数据结构】关于代码运行时间复杂度的计算方法
- 【数据结构】笔记(1)——计算和算法
- 数据结构学习笔记 --- 线性表 (一些常见的关于链表的算法和面试题)
- 数据结构和算法分析学习笔记(三)--二叉查找树的懒惰删除(lazy deletion)
- 《Delphi 算法与数据结构》学习与感悟[4]: 关于 const
- 数据结构和算法学习笔记(1)
- 数据结构学习笔记一:简单排序与查询算法
- 《Delphi 算法与数据结构》学习与感悟[4]: 关于 const
- 关于计算几何一些算法
- 数据结构—中缀表达式转后缀表达式算法及实现—栈的应用—计算表达式(C++代码实现)(1)
- 推荐一个关于.NET平台数据结构和算法的好项目
- 多核计算与程序设计 - 05 基本算法和数据结构 之二 多线程链表
- [笔记]关于软计算与仿生计算
- linux 笔记 关于struct file 结构下 private_data 数据结构的思考
- 关于3n+1问题的计算效率
- 关于java的数据结构和算法
- 算法导论学习笔记-第十四章-数据结构的扩张