目录第14课算法效率比一比(义务教育版)五年级上册教学目标1新知导入2议一议3想一想4学一学5练一练6课堂总结7作业布置81教学目标1.知道解决同一个问题可以有不同的算法,不同的算法具有不同的效率。2.通过实例比较和算法分析,了解算法执行的关键步骤和执行次数,体会算法存在的效率差异。2新知导入一堆物体摆放如左图所示3议一议要统计有多少个?4想一想你能想到哪些方法?5学一学一、用不同方法统计物体数量要统计下图所示物体的个数,常用的有两种方法。第一种算法观察发现,物体共10层,从上到下,每层分别是1至10个。把物体逐层进行累加,就可以获得物体个数。1+2+3+4+5+6+7+8+9+10=555学一学观察图形,发现可以用前面学习过的方法,即利用正反放置的两个梯形组成平行四边形,通过求平行四边形中物体的个数来计算。平行四边形中物体个数=每层个数×层数=(1+10)×10=110个梯形中物体个数=平行四边形中物体个数÷2=110÷2=55个第二种算法5学一学依据上述计算方法,可以总结得到求解一组连续自然数累加之和的公式。累加的和=(第一个数+最后一个数)×数的总个数÷2例如,自然数从1到n的累加之和可以表示为:s=(1+n)*n/2因此,s=(1+n)*n/2=(1+10)*10/2=555学一学通过比较发现:算法1简单直观,易于理解,算法2所用的步数较少,计算起来更快。通过求“1+2+3+…+10”的两种不同算法,说明解决同一个问题时,不同的算法会有不同的步骤,也就可能存在不同的效率。5学一学二、累加运算的效率分析通常,用计算机解决问题时会用以下两种方法来比较算法的效率。一是比较算法运行所需要的时间。二是比较算法运行时所需的步数或者占用的资源。算法效率比较的方法但是,如何衡量计算机在运行程序时所需的时间、执行的步数、占用的内存等,目前没有统一的准则,所以通常选择比较其中的一个方面。下面主要从时间上来进行分析。5学一学大家听过数学家高斯小时候计算“1+2+3+…+100”的故事吧?高斯使用第二种算法很快给出了答案,比所有其他孩子的速度都快。时间对比我们先来做一个“合理假设”:如果做1次加法用时1秒、做1次乘法用时10秒、做1次除法用时15秒。高斯怎么做的呢?5学一学用第一种算法计算:需要计算约99次加法,这样即使每次加法只用1秒,而且每次中间相加的结果都正确,最终也需要大约99秒的时间才能计算出结果。时间对比5学一学用第二种算法来计算:只需要1次加法(即100+1)、1次乘法(即101×100)和1次除法(即除以2),需要约1+10+15=26秒。单从计算步骤和时间上看,第二种算法似乎比第一种更高效。这就是在“合理假设”前提下,高斯比其他同学算得更快的一种解释。5学一学但是,问题并没有那么简单。因为做乘法和除法时,通常比做加法需要更长的时间。因此,如果以上“合理假设”并不成立。比如,如果做1次乘法或1次除法都需要50秒,那么用第二种算法所需时间就会变成1+50+50=101秒。5学一学通过上述分析可知,从让计算机解决问题的角度看,要准确地比较两个算法究竟哪个更高效,往往比我们预想的要难很多。通常需要从数据量、步骤多少、所需时间等方面综合考虑。在设计算法用计算机解决问题时也是如此,通常需要经过多次的比较、实验与探索来获得结论。5学一学三、感受不同算法的运算效率运算效率比较解决同一个问题通常可以用不同的算法,选择不同算法并编程实现后,程序一般会在运算速度、计算精度等方面有不同的表现。下面通过用程序验证上述累加运算的两种算法,体会算法的效率差异以及不同程序实现引起的差异。“累加1.py”程序是用算式直接累加与用公式累加的对比。“累加2.py”程序是用循环结构实现累加与用公式累加的对比。目录