排序是计算机科学中一项重要的技术,其应用范围广、使用频率高,因此对于排序算法的研究一直是计算机专家的重点。高校的程序设计类课程也将排序算法作为重难点进行教学。

1常见的几种排序算法

1.1算法的基本概念

算法(Algorithm)是指解题方案的准确而完整的描述,是一组解决问题的指令集合,按照一定的语法规则输入,在有限时间内获得所要求的输出。简单说就是计算机的解题过程。算法具备以下几个特征:有穷性,一个算法的执行次数必须是有限的;确切性,算法的中的语句都应该具有确切的语义;输入,算法可以有0个或多个输入,给运算对象赋初值;输出,算法应该有一个或多个输出,显示算法的运行结果;可行性,算法的设计在原则上是可行的。

1.2排序算法的简述

常见的几种排序算法有:冒泡排序、选择排序、快速排序、计数排序以及托普排序等。冒泡排序(BubbleSort),是最简单的排序方法,其基本思想是:将要排序的元素看成是一组竖排的“气泡”,较小的元素较轻,往上浮,通过若干次对这个“气泡”序列的处理,让最轻的浮到最上面,次轻的次之,依次完成排序。按照一般的教学方法,老师会先向学生讲解冒泡排序的基本思想和相应代码然后再执行。这种方式学生理解和掌握起来比较困难,也无法调动学生的学习积极性,更无法使学生灵活运用。因此,要设计出一个合理、高效的教学过程,调动学生的学习积极性,拓展学生的自主思维能力,使学生掌握冒泡排序算法的思想及其编程方法,并运用到解决实际问题当中。

2教学过程设计

2.1利用多媒体动态分解排序步骤

通过多媒体软件将排序过程设计为动态效果,演示数据序列的交换过程。相邻数据进行比较,大数下沉、小数上浮。这样能直观地展现冒泡序的过程,提高学生的学习兴趣。

2.2排序过程动态解析

下面通过实例来说明冒泡排序的过程,设计排序的数据序列为:5,7,3,0,6五个数,进行升序排列,其过程分析如下。第一趟排序:先让最上面相邻两个数字进行比较,如果上面的数大于后面的数,就交换两者的位置,再将交换后的数依次与后面的数进行比较,经过4次这样的比较,就可以让最大的数“沉底”。第二趟排序:对剩下的4个数字,再进行两两比较,同前面过程一样,经过3次比较,第二大的数就排到了倒数第二个位置。第三趟排序:对剩下的3个数,再进行两两比较,同前面过程一样,经过2次比较,第三大的数排到了倒数第三个位置。第四趟排序:对剩下的2个数进行两两比较,过程同上,经过1次比较,第四大的数排到了倒数第四个位置。从而完成的本次排序。

2.3给出代码与分析

根据前面对排序过程的分析可知,如有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}通过教学实践证明,冒泡排序的思想容易理解,学生在将其转换为程序言时较难,通过将排序过程作以上步骤总结后,学生在写程序时只需安排步骤进行代码编写,简单易行。再让学生自己举例,分析程序的执行过程,验证冒泡排序的思想和代码的正确性。

2.4引导学生发现问题,改进算法

在教学中让学生跟着老师的思路理解并掌握知识点很重要,但同时引导学生发现算法设计中存在的问题或者不完善的地方,由此探索解决办法,也是教学的一个重要目的。观察分析排序过程的表1可发现,最后两趟的数据顺序是一致的,也就是说倒数第二趟排序就已经排序完成了,最后一趟排序过程是多余的。由此可见,不管初始数据序列如何,根据上面的算法设计都要进行n-1趟排序,而在实际序列中,可能在少于n-1趟的排序中就已经变成了有序序列,完成了排序,后面的循环就没有必要了。这时老师可给出一个常规的改进算法:设置一个标志变量flag,如flag=1,表示有交换;flag=0,表示无交换。即是当flag=0时就结束循环,提高排序效率。具体做法是:在上述程序第1行下插入语句“flag=0;”,第6行下插入语句“flag=1;”,第7行下插入语句“if(flag==0)break;”。这样在程序的内层循环中不再有值的变化时就可以跳出循环,结束程序,从而提高算法的效率。现代教育着重对学生创造性思维的培养,相对于知识的讲授更重要的是让学生掌握思维方式,发散思维就是创造性思维中的一种重要形式。通过上面的讲解让学生知道冒泡算法还有其不完善的地方,可进一步启发学生对算法进行改进:如上浮下沉算法、快速排序算法、线性时间算法等。使学生能更快更好掌握排序算法的基本思想和原理,着重培养学生发现问题和解决问题的能力,激发学生的独立思考和创新能力,这比将固化的知识点传授给学生更加的重要和有效。

3结语

本文以讲授冒泡排序为例,设计了通过动态的PPT和增加动画效果等多媒体教学手段,采用正向讲解算法思想,逆向分析具体实例,归纳、总结算法的多种思维方法,形象生动的向学生展示了冒泡排序的基本思想和变化过程。一方面通过步骤的总结过度到代码的书写,突破代码书写的难点。另一方面引导学生观察算法的不足之处,让学生自己发现问题,并提出解决问题的办法,进而培养学生的发散思维和独立思考的能力,体现了现代教育着重培养学生创新能力的教育思想。

作者:杨波 梁少林 单位:四川文理学院数学与财经学院

c语言排序教学过程,C语言中冒泡排序算法教学设计相关推荐

  1. C语言案例教学设计论文,【教学设计论文】C语言中冒泡排序算法教学设计(共2525字)...

    排序是计算机科学中一项重要的技术,其应用范围广.使用频率高,因此对于排序算法的研究一直是计算机专家的重点.高校的程序设计类课程也将排序算法作为重难点进行教学. 1常见的几种排序算法 1.1算法的基本概 ...

  2. c语言一维数组教学设计,C语言教学中一维数组教学设计.doc

    C语言教学中一维数组教学设计 C语言教学中一维数组教学设计 [摘 要] 数组是C语言中非常重要的概念,通常学生在初次接触到这一概念时感到很抽象.本文通过生活中常常接触到的超市储物柜与数组进行类比,将数 ...

  3. 中职计算机英语教学设计,中职英语教学设计三篇

    中职英语教学设计三篇 篇一:中职英语教学设计教案 教学设计过程 Step I Leading-in and Pre-reading 1. Asking some questions: a) What ...

  4. 如何用matlab画旋转面,基于MATLAB在旋转面及其方程教学中应用的教学设计

    汝强 [摘 要]在空间解析几何教学中,MATLAB不仅能将复杂的空间曲面方程精准.直观地用三维图形表现出来,还能以动画的形式将空间复杂曲面任意旋转,使学生能直观地.全方位地观察.理解空间曲面方程所表示 ...

  5. html5 人在星空中,《在星空中》的教学设计

    教学背景分析: 从本课开始,学生将展开对星座的认识.涉及星座的教学内容分为五部分:第一部分了解星座:第二部分建立一个"星座"模型:第三部分认识四季主要星座:第四部分开个观察交流会: ...

  6. 中职计算机英语教学设计,中职英语教学设计模板

    中职英语教学设计模板 导语:对于中职的英语教学应该如何设计教案?以下是小编为大家整理的文章,欢迎阅读!希望对大家有所帮助! 教学目标: 1.能准确记住部分单词的过去分词. 2.能准确记住并说出过去完成 ...

  7. 如何应用好计算机教学设计,信息技术在教学活动中的应用教学设计

    信息技术在教学活动中的应用教学设计 信息技术,是主要用于管理和处理信息所采用的各种技术的总称.下面是小编整理的关于信息技术在教学活动中的应用教学设计,希望大家认真阅读! [1]信息技术在教学活动中的应 ...

  8. 【C语言】两种方式实现冒泡排序算法

    题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行 ...

  9. c语言冒泡排序法程序填空_【C语言】两种方式实现冒泡排序算法

    题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行 ...

最新文章

  1. js 创建一条通用链表
  2. php在线读取pdf文件大小_南公子私藏PDF神器曝光
  3. ajax post 没有返回_Ajax异步技术之三:jQuery中的ajax学习
  4. 对层级聚类树进行模块分割,定位基因在哪个模块中
  5. 基于scikit-learn的SVM实战
  6. CodeForces 551E(平方分割
  7. 8.企业安全建设入门(基于开源软件打造企业网络安全) --- 态势感知系统建设
  8. paip. everything exe 文件不能启动的解决
  9. pytorch实现多种经典GAN
  10. hao123劫持浏览器主页
  11. Gitlab在线安装、离线安装、搭建、使用等详细介绍,不能再详细了……
  12. mysql 某个日期加七天_Mysql时间操作(当天,昨天,7天,30天,半年,全年,季度)...
  13. 聊一聊数据库的行存与列存
  14. CDOJ1057-秋实大哥与花
  15. Laravel Carbon
  16. SAP小技巧 DOCKING容器解决分辨率问题
  17. 金仓数据库 时间没有 时分秒 的问题
  18. poi使用模板导出word带图片
  19. java jdom_java使用Jdom实现xml文件写入操作实例
  20. 基于JAVAWeb产品管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

热门文章

  1. 转javascript图片预加载技术
  2. 再度剖析AD账户新旧密码同时可用的问题
  3. 自制清理电脑里的垃圾软件
  4. Linux之SSH性能调优,防止连接等待时间过长,连接速度飞起
  5. 关于Android adb实现框架和应用
  6. 赛门铁克针对勒索软件WannaCry发布全球预警
  7. 如果修改postgresql的最大连接数
  8. 个人对面向对象的理解总结
  9. [知识库分享系列] 三、Web(高性能Web站点建设)
  10. Python学习【第6篇】:Python之文件操作