2011-5-311铜仁学院制作人:奉彩霞指导老师:韩春霞老师2011-5-312大一学生已学习了程序设计的三种结构,也了解了一些简单的VB程序,用冒泡排序法排序,这一节是学习算法和编写程序的基础,对于程序设计来说,算法非常重要,而大一学生对算法和程序的认识仍然比较模糊,因此在教学过程中,必须用一组实际的数字作为例子来讲解,从而加深学生对本节课的理解,使学生了解冒泡排序法的具体算法,从而培养学生的逻辑思维能力和进一步学习程序的兴趣。教学对象及教材分析2011-5-313重点掌握冒泡排序法的思想和具体算法难点用冒泡排序法排序的程序教学方法讲授法、谈话法、读书指导法教学重点及难点2011-5-314知识与技能:(1)掌握冒泡排序法的思想和具体算法,了解程序设计的思路。(2)能编写用冒泡排序法排序的程序,培养学生的创新能力。情感目标:培养学生的逻辑思维能力,激发学生的兴趣,形成积极主动学习信息技术的态度。教学目标2011-5-315新课引入学习做操歌唱比赛2011-5-316新课引入(续)无论是上课学习,还是做体操,歌唱比赛等时,都要进行排序。请同学们快速地打开课本,今天我们将学习一种新的排序方法——冒泡排序法。2011-5-317冒泡排序法1、什么是冒泡排序法2、冒泡排序法的思想3、算法4、程序2011-5-3181、什么是冒泡排序法?冒泡排序法就是依次比较相邻的两个数,将小数放在前面,大数放在后面。从第一趟中找出最大数或最小数……逐次让大的数往下沉,而让小的数像气泡一样不断向上冒,这样的算法叫冒泡排序法。方法:下沉法和上浮法2011-5-319用冒泡排序法比较高矮:比你矮,那我站前面吧!我高,那我是最高的吗?哈哈…比你高,我站后面。我又比他高,那我再比较我不会是最矮的吧?哎呀,没他高,我只能站这里了最高次高第三高第四高2011-5-31102、冒泡排序法的思想依次比较相邻的两个数大数下沉,小数上浮第一趟找出最大数第二趟找出次大数依次类推……2011-5-3111我们用一个例子来进行讲解。如:请问同学们,问从小到大排列,这组数的顺序是多少?135893、算法2011-5-3112用冒泡排序法第一趟排序情况:初始(第一趟)最大值第一次第二次第三次第四次2011-5-3113初始每一趟的排序情况如下:第一趟第二趟第三趟第四趟2011-5-3114请5位同学上讲台来模拟冒泡排序的过程活动2011-5-3115观察:5个数一共需要进行多少趟排序?每一趟需要比较几次?4、程序9533153513381558988811999初始第一趟第二趟第三趟第四趟比较次数4321观察所得:5个数一共排序4趟,第一趟需要比较4次,第二趟需要比较3次,第三趟需要比较2次,第四趟需要比较1次。2011-5-3116如果用冒泡排序法对10个数排序,要进行趟排序。如果一趟排序中,在6个数中确定最大数的位置,要比较次。最多需要交换次,最少交换次。95502011-5-3117假如我们输入n个数,需要比较的趟数是趟,也就是从到,用变量i控制,i的范围就是。从第一趟找出最大的数,需要我们比较次;从第二趟找出次大数,需要比较次。从而可推出什么结论?用一个变量j控制它,那它的范围是多少?n-11n-1n-11到n-1n-2从1到n-i2011-5-3118个数n趟数i从1到n-1步长为1次数j从1到n-i步长为1如果score(j)score(j+1)那么交换score(j)和score(j+1)总结出以下规律:2011-5-3119流程图:i=1,j=1temp=score(j)score(j)score(j+1)是score(j)=score(j+1)score(j+1)=tempj++i++j=n-i否i=nj=1否结束是是开始否2011-5-3120n=5时的代码:Dimscore(5),tempAsSingleDimi,jAsIntegerFori=1To5Step1score(i)=Val(InputBox(输入成绩))NextIEndIfNextjNextiFori=1To5Step1Printtemp=&score(i)NextiFori=1To5Step1Forj=1To5-iStep1If(score(j)score(j+1))Thentemp=score(j)score(j)=score(j+1)score(j+1)=temp即……2011-5-31211、把49388697746558这一组数据用冒泡排序法排序,要求写出每一趟的排序过程。2、写出个数为n时冒泡排序法的程序。2011-5-3122谢谢!