计算机求百钱买百鸡采用的算法,从“百钱买百鸡”与“求完数”问题浅谈算法优化...

在大专院校的计算机课程里面,算法的时间复杂度一般是在数据结构课程中才开始学习,教师在《高级语言程序设计》课程的教学中往往容易忽略对学生论及算法优化。本文从“百钱买百鸡”与“求完数”两个编程实例谈算法优化,尝试从简单的例子让学生掌握时间复杂度和算法优化的重要性。

20 0 8年 1月

广西轻工业

维普资讯 http://doc.xuehai.net

第 1 (期总第 1 0 ) 期 1

G A G IO R A FL H D SR U N X JUN LO I TI UTY G N

计算机与信息技术

从“百钱买百鸡"求完数"与“问题浅谈算法优化

陆深焕

(汕头职业技术学院计算机系,广东汕头 5 7 ) l 0 8 5

【摘要】在大专院校的计算 机课程里面,算法的时间复杂度一般是在数据结构课程中才开始学习,教师在《高级语言程

序设计》课程的教学中往往容易忽略对学生论及算法优化。本文从“百钱买百鸡”求完数”与“两个编程实例谈算法优化,尝试从简 单的例子让学生掌握时间复杂度和算法优化的重要性。

【关键词】算时间法;复杂度;优化;数算法完【中图分类号】 T 3 1 P9 【文献标识码】 A

1算法的时间复杂度与算法优化

算法是指对解题方案的准确而完整描述。

【文章编号】 10—63 08 1 0 8— 2 0327( 0)— 00 0 2 0

1 0 1 0 1 0 1 0万次。 0"0" 0= 0这个问题“规模”不大,以程序在计所

算机上可以很快执行完。 解法 2数学能力稍强的学生就会想到, (公鸡的个数不会超过 2个, 0母鸡的个数不会超过 3个, 3所以会写出第二个解法 ):

cas u d e 2 ls n rd{ H p bi s t i i(t n g[{ u l ai v d c t c o manSr g rs) i a]

i oc nt c k; i the n n; i hi k; ntc c

算法有易读性、壮性和高效率的设计要求。其中高效率健的一个度量就是算法的时间复杂度,算法时间复杂度是指执行算法所需要的计算工作量。 简单来说,算法优化是指保证算法的正确性和可读性的基础上,尽量提高算法的效率,即减少算法时间复杂度。估算算法运行时间的基本考虑是:确定问题的“规模”和确定算法执行

“基本操作”的次数。

fr ok 1 ok= 0cc+ ) 0c _( c=; c< 2; k+ c o

2百钱买百鸡问题

公元前五世纪,我国古代数学家张丘建在《经》算一书中提

出了“百鸡问题”鸡翁一值钱五,:鸡母一值钱三,雏三值钱鸡

fr e=;e< 3; n+ o( n 1 n= 3 e+ ) h h h

fI h c=; ik 1 0 hc

+ ) o( ik 1 h c< 0; i k+ c c c

i f

百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?这里有要求, (就是

( o k h n c ik= 0 ) 5 cc+木 e+ hc,= 1 0 ( c+ e+ hc= 1 0&&(木 o k 3 h n c ik3= 0 ) c &&( ik= 0 c c%3= ) h )

S t . . i tn t oc ysem out pr n l rt k=” oc c+c k+” t n=”、 he+hen+” t、

1 0钱刚好要用完, 0鸡翁、鸡母和鸡雏都必须要买到 (= )显> 1,

然,小鸡的个数必须是 3的倍数 )。解法 1以下代码全部是用 J v语言编写 ) ( aa:

cas n rd{ ls de 1 Hu p bi s t odm i(t n g[{ u l aiv i anSr g rs) ct c i a]

i c nt co k; i nthe n; i tc c n hi k;

c ik” h c 1 hc=+c i; k

1 解法 1的程序运行结果: 解法 2的程序运行结果:

fI o k 1 o k 1 0c c+ ) o( c=; c< 0; k+ c c o

 ̄r e=;e< O;e+ ) ( n l n l 0h n+ h h fI hc=;hc< 0; ik+ 0c l( ik 1 ik 1 0c c+ ) c h

i f

( ok h n c ik= 0 ) 5 o k 3 h n c ik3= 0 ) ( c+ e+ hc= 1 0&&( c cc+ e+ hc/= 1 0 &&c ik: 0) (hc%3= )

S s e o t r n l r c c=” c c+、 h n” h n” t y t m.u . i tn t o k+ o k” t e=+ e+、 p -

c ik” c ik; hc=+ hc )

解法 2比解法 1率要高,以看出,效可解法 2中计算机执行指令次数大约是 2 * 3 1 0 6 0 0次 ( . 0 3 * 0= 6 0 66万次 )。因为问题规模不大,以,所我们在运行上面两个程序时都很快,觉不感

到运行时间的时间差。

) )

这个算法学生容易想到,而重复是计算机的拿手好戏,算法可读性好。那么该算法执行工作量有多大呢?考虑到最耗费时间的是 fr循环,故计算机执行语句次数大约是 o

但是,熟悉算法时间复杂度的读者,就可以看出,实解法其 1和解法 2的时间复杂度是一样的,因为都是 3重循环

,以所复杂度都是 O(s只是因为 n很小,算机有很快的运行速 n),计

【者简介】作陆深焕(90 )男,广宁人,教,方向: 18-,广东助研究计算机软件。

http://doc.xuehai.net

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值