C语言中冒泡排序算法教学设计.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言中冒泡排序算法教学设计

C语言中冒泡排序算法教学设计   排序是计算机科学中一项重要的技术,其应用范围广、使用频率高,因此对于排序算法的研究一直是计算机专家的重点。高校的程序设计类课程也将排序算法作为重难点进行教学。   1常见的几种排序算法   算法的基本概念   算法(Algorithm)是指解题方案的准确而完整的描述,是一组解决问题的指令集合,按照一定的语法规则输入,在有限时间内获得所要求的输出。简单说就是计算机的解题过程。算法具备以下几个特征:有穷性,一个算法的执行次数必须是有限的;确切性,算法的中的语句都应该具有确切的语义;输入,算法可以有0个或多个输入,给运算对象赋初值;输出,算法应该有一个或多个输出,显示算法的运行结果;可行性,算法的设计在原则上是可行的。   排序算法的简述   常见的几种排序算法有:冒泡排序、选择排序、快速排序、计数排序以及托普排序等。冒泡排序(BubbleSort),是最简单的排序方法,其基本思想是:将要排序的元素看成是一组竖排的“气泡”,较小的元素较轻,往上浮,通过若干次对这个“气泡”序列的处理,让最轻的浮到最上面,次轻的次之,依次完成排序。按照一般的教学方法,老师会先向学生讲解冒泡排序的基本思想和相应代码然后再执行。这种方式学生理解和掌握起来比较困难,也无法调动学生的学习积极性,更无法使学生灵活运用。因此,要设计出一个合理、高效的教学过程,调动学生的学习积极性,拓展学生的自主思维能力,使学生掌握冒泡排序算法的思想及其编程方法,并运用到解决实际问题当中。   2教学过程设计   利用多媒体动态分解排序步骤   通过多媒体软件将排序过程设计为动态效果,演示数据序列的交换过程。相邻数据进行比较,大数下沉、小数上浮。这样能直观地展现冒泡序的过程,提高学生的学习兴趣。   排序过程动态解析   下面通过实例来说明冒泡排序的过程,设计排序的数据序列为:5,7,3,0,6五个数,进行升序排列,其过程分析如下。第一趟排序:先让最上面相邻两个数字进行比较,如果上面的数大于后面的数,就交换两者的位置,再将交换后的数依次与后面的数进行比较,经过4次这样的比较,就可以让最大的数“沉底”。第二趟排序:对剩下的4个数字,再进行两两比较,同前面过程一样,经过3次比较,第二大的数就排到了倒数第二个位置。第三趟排序:对剩下的3个数,再进行两两比较,同前面过程一样,经过2次比较,第三大的数排到了倒数第三个位置。第四趟排序:对剩下的2个数进行两两比较,过程同上,经过1次比较,第四大的数排到了倒数第四个位置。从而完成的本次排序。   给出代码与分析   根据前面对排序过程的分析可知,如有n个数要进行排序,则可总结出以下步骤:排序的趟数为n-1;相邻两数从前往后比;每趟比较n-1-i次;大小不对就交换。按照总结的步骤给出完成相应功能的代码,学生接受和理解起来更加容易。其主要代码如下:1For(i=0;ia[j+1])/*大小不对就交换*/4{temp=a[j];5a[j]a[j+1];6a[j+1]=temp;7}8}通过教学实践证明,冒泡排序的思想容易理解,学生在将其转换为程序言时较难,通过将排序过程作以上步骤总结后,学生在写程序时只需安排步骤进行代码编写,简单易行。再让学生自己举例,分析程序的执行过程,验证冒泡排序的思想和代码的正确性。   引导学生发现问题,改进算法   在教学中让学生跟着老师的思路理解并掌握知识点很重要,但同时引导学生发现算法设计中存在的问题或者不完善的地方,由此探索解决办法,也是教学的一个重要目的。观察分析排序过程的表1可发现,最后两趟的数据顺序是一致的,也就是说倒数第二趟排序就已经排序完成了,最后一趟排序过程是多余的。由此可见,不管初始数据序列如何,根据上面的算法设计都要进行n-1趟排序,而在实际序列中,可能在少于n-1趟的排序中就已经变成了有序序列,完成了排序,后面的循环就没有必要了。这时老师可给出一个常规的改进算法:设置一个标志变量flag,如flag=1,表示有交换;flag=0,表示无交换。即是当flag=0时就结束循环,提高排序效率。具体做法是:在上述程序第1行下插入语句“flag=0;”,第6行下插入语句“flag=1;”,第7行下插入语句“if(flag==0)break;”。这样在程序的内层循环中不再有值的变化时就可以跳出循环,结束程序,从而提高算法的效率。现代教育着重对学生创造性思维的培养,相对于知识的讲授更重要的是让学生掌握思维方式,发散思维就是创造性思维中的一种重要形式。通过上面的讲解让学生知道冒泡算法还有其不完善的地方,可进一步启发学生对算法进行改进:如上浮下沉算法、快速排序算法、线性时间算法等。使学生能更快更好掌握排序算法的基本思想和原理,着重培养学生发现问题和解决问题的能力,激发学生的独立思考和

文档评论(0)

a888118a + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档