资源简介 冒泡排序教学设计【教学目标】知识目标:掌握冒泡排序的原理;理解冒泡排序的流程图;编写冒泡排序的主要代码;能力目标:学会使用冒泡排序思想设计解决简单排序问题的算法;进一步理解程序设计的基本方法,体会程序设计在现实中的作用;情感目标:培养学生分析问题、发现规律的能力,激发学生学习热情;培养良好的程序书写习惯;【重点难点 】 重点:理解冒泡排序原理及它的流程图难点:理解冒泡排序中的遍、次等概念(即对变量使用的理解)【教学策略与手段】采用讲解法、演示法、分析归纳法引导学生参与思考,用逐步求精的方式降低学生的理解难度,化抽象为具体,由特殊到一般,有效地突出重点突破难点。【课前准备】1.教师的教学准备:冒泡排序的课件2.教学环境的设计与布置:多媒体网络教室、投影机、多媒体教学平台【教学过程】一、课前:复习导入二、新课引入1、冒泡排序。2、呈现冒泡排序思路。3、完整例子讲解冒泡排序的进程。(1)先让学生思考如何将第一个最小数放在第一位引出趟数的概念后,讲解剩下所有数据的冒泡过程。从5个数据通过冒泡排序需要的趟数引申出n个数进行冒泡排序要n-1趟排序4、练习加深对冒泡排序过程的认识。5、做完后再思考n个数进行冒泡排序最多需要同进行多少次比较。课后练习:区分比交次数与交接次数的不同三、程序升华1、思考有两个数据,如何将较小的数据放前面?2、如何将刚才思路用程序体现?3、如果一个数组d有5个元素(数据垂直排放,值如下)要求将它们中的最小一个数放到第一个位置,该如何写程序?思考:具体每次是哪两个数据在比较后交换?4、要如何将这个数组d的5个元素从小到大排列?。5、引进趟数,简化程序6、总结结构思路四、课堂小结(1)冒泡排序是一个双重循环,一共循环了多少次(2)冒泡排序总冒泡次数?4(共15张PPT)冒泡排序PaixuSuanfa冒泡排序把存放在数组中的一组杂乱无章的数据变为一组按一定顺序(从小到大或从大到小)排列的数据就是排序(sort)冒泡排序思想(概括):什么是排序?在一列数据中把较小的数据逐次向上推移的一种排序技术冒泡排序冒泡排序是把待排序的n个元素的数组看成垂直堆放的一列数据,从最下面的一个元素起,自下而上地比较相邻的两个元素中的数据,将较小的数据换到上面的一个元素中。重复这一过程,直到处理完最后两个元素中的数据,称为一遍加工,当第一遍加工完成时,最小的数据已经上升到第一个无素的位置,然后对余下的n-1个元素重复上述处理过程,直至最后进行余下两个数据的比较和交换。冒泡排序思想(详细):73481d12345下标请再来思考一下:73418123457348112345123457134873148123451234517348如何运用冒泡将第一个最小的数放到第一个位置?第一趟排序:将最小数放至第一个位 要如何将下列数组d的5个元素从小到大排列?。5数排序过程:1374812345123451347812345137481347812345123451347873481123457341812345731481234512345713481234517348最后一个数据放在第1(第1趟)最后一个数据放在第2(第2趟)最后一个数据放在第3(第3趟)最后一个数据放在第4(第4趟)1734812345123451234513748123451734817348n个数进行冒泡排序要n-1趟排序P32例1:若用冒泡排序对数据70,53,57,28,30,77,1进行排序,排序过程如图所示,则第二趟加工后的结果是()原始数据7053572830771第一遍加工后1705357283077第二遍加工后第三遍加工后1283070535777……………………BP32例1:对7个数据用冒泡排序升序排序,第一遍加工后的结果如图所示,原始数据可能是()原始数据第一遍加工后1705357283077……………………A.1,70,53,57,77,28,30B.70,1,53,57,28,30,77C.70,53.57.28.30,77,1D.70,53,1,57,28,30,77C1,28,70,53,57,77,301,70,28,53,57,30,771,70,53,28,57,30,77思考:第一遍:总共n个数,需要比较n-1第二遍:总共n-1个数,需要比较n-2第三遍:总共n-3个数,需要比较n-3最后一遍即第n-1遍:总共2个数,需要比较1…次数=(n-1)+(n-2)+(n-3)+…+2+1=n(n-1)/2 n个数进行冒泡排序最多需要同进行多少次比较。比较P344交换P3457348112345思考:A 3+2P2542:对下列数据序列进行冒泡升序排序,在排序过程中效率最低的序列是()A.31,29,24,20,15,10B.10,15,20,24,29,31C.29,10,31,15,20,24D.24,29,31,20,15,10方法:若后面的数<前面的数,两者交换位置有两个数据,如何将较小的数据放前面?用p(i)表示后面的数据,前一个数据则可以表示成Ifthen‘判断p(i)是否小于p(i-1)‘将两个数据相互交换EndifP(i)k=p(i):p(i)=p(i-1):p(i-1)=kP(i-1)3443程序实现程序实现:p(i)与P(i-1)交换数据73481d12345下标 如果一个数组d有5个元素(数据垂直排放,值如下)要求将它们中的最小一个数放到第一个位置,该如何写程序?。请再来思考一下:73418123457348112345123457134873148123451234517348如何写程序?73418123457348112345123457134873148123451234517348思考:具体每次是哪两个数据在比较后交换?d(5)VSd(4)d(4)VSd(3)d(4)VSd(2)d(2)VSd(1)用d(i)表示后一数,前一数则应表示成d(i-1)程序实现:d(i)与d(i-1)交换数据‘判断d(i)是否小于d(i-1)‘将两个数据相互交换d(i)k=d(i):d(i)=d(i-1):d(i-1)=k‘设定i的起始和终止范围EndifIfthen循环多次Fori=toNext52后一数VS前一数Step-1 要如何将这个数组d的5个元素从小到大排列?。提升要求:1374812345123451347812345137481347812345123451347873481123457341812345731481234512345713481234517348最后一个数据放在第1最后一个数据放在第2最后一个数据放在第3最后一个数据放在第41734812345123451234513748123451734817348请写出接下来所有的过程!请用程序将每次过程实现!Forj=5to2step-1Ifd(j)thenk=d(j):d(j)=d(j-1):d(j-1)=kEndifNextForj=5to3step-1Ifd(j)thenk=d(j):d(j)=d(j-1):d(j-1)=kEndifNextForj=5to4step-1Ifd(j)thenk=d(j):d(j)=d(j-1):d(j-1)=kEndifNextForj=5to5step-1Ifd(j)thenk=d(j):d(j)=d(j-1):d(j-1)=kEndifNext简化程序:5个数据排序需要经过几遍才能完成?Forj=5to2step-1Ifd(j)thenk=d(j):d(j)=d(j-1):d(j-1)=kEndifNextForj=5to3step-1Ifd(j)thenk=d(j):d(j)=d(j-1):d(j-1)=kEndifNextForj=5to4step-1Ifd(j)thenk=d(j):d(j)=d(j-1):d(j-1)=kEndifNextForj=5to5step-1Ifd(j)thenk=d(j):d(j)=d(j-1):d(j-1)=kEndifNextFori=toNextForj=to.Ifd(j)thenk=d(j):d(j)=d(j-1):d(j-1)=kEndifNext1‘i表示需要经过的遍数‘每遍比较互换过程45i+14遍n个数据排序需要经过几遍才能完成?n-1遍n-1nStep-1第1趟第2趟第3趟第4趟简化程序:5个数据排序需要经过几遍才能完成?Fori=toNextForj=to.Ifd(j)thenk=d(j):d(j)=d(j-1):d(j-1)=kEndifNext1‘i表示需要经过的遍数‘每遍比较互换过程45i+14遍n个数据排序需要经过几遍才能完成?n-1遍n-1n(每趟从后往前比较)常用的冒泡排序程序的一般结构:让i从1到n-1循环让j从n到i+1循环若a(j)与a(j-1)逆序,则交换a(j)与a(j-1)的值(冒泡一次)循环尾循环尾Step-1 展开更多...... 收起↑ 资源列表 冒泡算法.doc 冒泡算法.ppt