四个经典的算法案例

龙源期刊网 https://www.360docs.net/doc/695852728.html,

四个经典的算法案例

作者:郑小瑛

来源:《读写算》2012年第21期

案例1:辗转相除法,又名欧几里德算法,它是用来求两个正整数最大公因数的一种方法。

例:用辗转相除法求8251与6105的最大公约数

∵ 8251÷6105=1 余 2146 6105÷2146=2 余 1813 2146÷1813=1 余 333 1813÷ 333=5 余 148 333 ÷ 148=2 余 37 148 ÷ 37=4 ∴ 37是8251与6105的最大公约数。

程序框图如下:其中 r = mod(a, b) r表示a÷b的余数

案例2:秦九韶算法,它是中国南宋时期数学家秦九韶提出的,用来解决多项式的求值问题,在西方被称作霍纳算法。

首先看一道例题:求多项式f(x)=2x5―5x4―4x3+3x2―6x+7当x=5时的值。

根据秦九韶算法:f(x)可表示为f(x)=({[(2x―5)x―4]x+3}x―6)x+7

于是令 V0=5 则V1=2V0―5=2×5―5=5 V2=V1X―4=5×5―4=21 V3=V2X+3=21×5+3=108 V4=V3X―6=108×5―6=534 V5=V4X+7=534×5+7=2677 ∴ f(5) = 2677

秦九韶算法只用到乘法、加法两个简单运算,不需要乘方运算,它是多项式求值的简化算法。

下面看程序框图,其中a0、a1、a2、a3、a4、a5是f (x) 从右向左的系数。

案例3:排序:是一种基本并且常用的算法,排序的算法很多,可以参阅课本,这里不再叙述。

案例4:进位制

例:画程序框图,表示把k进制数a(共有n位),转化为十进制数b的过程

框图如下:

其中:t = GET a│i│ t表示a右数第i位

利用上面的算法,把2进制数110011化为十进制的数

相关文档
最新文档