Horner法则(秦九韶算法 )的程序实现
来源:互联网 发布:贝贝看图软件 编辑:程序博客网 时间:2024/06/01 08:49
注:《数据结构与算法分析——C》习题2.10 学习笔记
(另外大家在使用csdn时一定要注意 有时候写新文章时会显示最近编辑的一篇文章,如果此时没有点“写新文章”那么在发表后会覆盖之前保存的文章=。= 大家也都知道 覆盖比删除更彻底 ,所以大家在使用的时候一定要注意这点。。。)
另外介绍一个可以在线编辑LaTex公式的网站
http://latex.codecogs.com/eqneditor/editor.php
知识预习
Horner法则在中国叫做秦九韶算法
https://zh.wikipedia.org/wiki/%E7%A7%A6%E4%B9%9D%E9%9F%B6%E7%AE%97%E6%B3%95
()
原题描述
2.10 考虑下述算法(称为Horner法则)。计算
Poly = 0;for(i = N; i >= 0; i--) Poly = X * Poly + A[i]
a. 对X = 3,
b.解释该算法为什么能够解决这个问题。
c.该算法的运行时间是多少?
分析过程
按照其思路我们
class test{ public static long poly2(int[] arr, int x, int n){ //arr存储系数, x 表示基数, n 表示幂 long poly = 0; for(int i = n; i >= 0; i--) poly = poly * x + arr[i]; return poly; } public static void main(String[] args) { int[]b = {2,1,0,8,4}; System.out.println(poly2(b,3,4)); }}
上图是用Java语言写了一下 ,首先我们按照法则把这个公式分解开
是这样的,那么我们在单步调试上面程序的时候发现程序也确实是按照这个来计算的,但是有一点需要注意那就是系数数组的顺序
它的正序或者倒序取决于for循环是如何编写的,例如下面的程序我们就可以正序书写系数数组
class test{ public static long poly2(int[] arr, int x, int n){ //arr存储系数, x 表示基数, n 表示幂 long poly = 0; for(int i = 0; i <= n; i++) poly = poly * x + arr[i]; return poly; } public static void main(String[] args) { int[]b = {4,8,0,1,2}; System.out.println(poly2(b,3,4)); }}
效率以及意义
效率
对于一个
而使用秦九韶算法时,至多只需作
意义
该算法看似简单,其最大的意义在于将求n次多项式的值转化为求n个一次多项式的值。在人工计算时,利用秦九韶算法和其中的系数表可以大幅简化运算;对于计算机程序算法而言,加法比乘法的计算效率要高很多,因此该算法仍有极大的意义,用于减少CPU运算时间。
- Horner法则(秦九韶算法 )的程序实现
- Horner法则的递归实现
- HORNER(霍纳)法则的C实现以及算法比较 2.10
- 霍纳法则(Horner)/秦九韶算法
- 秦九韶算法 Horner算法
- Horner法则
- Horner法则
- Horner法则
- Horner法则
- 数据结构与算法分析 2.14 考虑下列算法(Horner法则)
- Horner Rule(霍纳法则)
- 霍纳法则(Horner's rule)
- 多项式求值的Horner算法
- Horner规则的递归实现
- 霍纳法则(horner)
- 快速计算多项式:霍纳法则(Horner's rule)
- horner法则求字符串散列值
- Horner Rule(霍纳法则)
- 定位父级offsetParent及偏移大小
- JS那些事儿(1)
- ruby on rails 城市三级联动查询json
- 使用scikit-learn进行机器学习的简介(教程1)
- Python中的高级数据结构
- Horner法则(秦九韶算法 )的程序实现
- UNIX再学习 -- 线程
- Python基础之一
- STL的六大组件
- 区分元素特性attribute和对象属性property
- Java 多线程 并发编程
- 【栈】洛谷 P1449 后缀表达式
- Numpy详解
- 04 QT实现一个简单的看图程序