第三节 排序和查找
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三节排序和查找
一、教材分析
排序和查找算法是一种数据处理问题最常用的算法思想,在日常生活和学习过程中,经常需要对各种数据进行查找,而且总是希望要查找的数据井然有序,这样可以节约时间和精力,其实就是排序问题,在绝大多数情况下,查找是和排序紧密结合在一起的。本节在编写上力求前面体现排序和查找算法的基本思想,设计了一个典型的“运动员比赛成绩管理问题”,本节在设计上,就是让学生通过经历一个充分体现查找和排序的活动的算法分析设计过程,体验和感受相对比较简单的冒泡排序法和顺序查找法的基本思想,了解排序和查找的应用场合。在实践示例中通过与基本排序查找算法对比引入改良的算法选择排序法和二分查找法,让学生深入理解和掌握排序和查找算法的基本思想。通过运动会管理程序不同模块对数组的引用,让学生了解变量的作用范围。通过课堂三个教学活动的分析设计,让学生深入理解和体会模块化程序设计思想。排序和查找算法的原理与解析法和穷举法相比复杂了一些,如果通过大量的实践应用,也是很容易掌握的,在学习指引中有明确的描述。
在活动设计上,用到了两个“分析”和一个“实现”,旨在让学生重点关注冒泡法的分析过程和顺序查找法的分析过程,并在程序实现的过程中,体会变量的作用范围和两个分析子程序的调用过程,在宏观上渗透模块化程序设计思想。
1.教学活动一分析:分析比赛成绩排序算法并编写程序
3.教学活动三分析:实现运动会管理的应用程序
4.选择排序算法及示例分析:
选择排序算法是对冒泡排序算法的改进,通过下面的活动分析,旨在让学生在对比分析过程中掌握排序的基本思想。熟练掌握两种排序算法的使用过程及关键问题的处理过程,尤其是不同排序算法之间的排序原理的区别,决定了学生在今后解决实际问题中选择何种排序算法的重要依据,是学生算法分析素养的提升的关键环节。
示例:寻找一个数列中最小数的方法
查询过程:采用循环和选择程序结构,按顺序逐一比较数列中相邻的两个数,通过交换位置或记忆位置的方式,找到最小数。
5.二分查找算法及示例分析:
二分查找算法是对顺序查找算法的改进,通过下面的活动分析,旨在让学生在对比分析过程中掌握不同的查询思想。熟练掌握两种查询算法的使用过程及关键问题的处理过程,尤其是不同查询算法之间的查询分析过程的区别,决定了学生在今后解决实际问题中选择何种查询算法的重要依据,是学生算法分析素养的提升的关键环节。
示例:在有序数列A{3,16,20,27,35,39,46,48,55,73}中查找20和71
6.变量的作用范围
DIM的意思是声明的意思,而PRIV A TE是私有的意思,DIM只用于声明变量,由于变量的默认声明是私有的,所以DIM和PRIV A TE在声明变量上基本上是一样。而private和public是指对变量,过程、函数的访问类型。它不仅仅用于变量,还用于对象、过程、函数。
如:private function find2(k as Integer) as integer
……
end function
则find2函数只能在定义的模块中被调用。
理解和掌握两种排序和查找方法的基本思想是本节的重点内容,熟练运用排序和查找算法的基本思想分析实际问题和实现程序设计过程是本节的难点所在。
二、教学建议
建议本节分成三课时完成。第一课时完成教学活动一和“学习指引”中的“排序算法”;第二课时完成教学活动二和“学习指引”中的“查找算法”;第三课时完成教学活动三和“学习指引”中的“变量的作用范围”。
1.为了满足一些基础较好和想要深入了解排序和查找算法法的学生需求,教师在课前整理一些用排序和查找算法实现的典型程序设计过程,供他们选择探究和体验。
2.教师可以提供一些关于排序和查找算法应用的网站供学生自主学习使用。
1.开始活动一:比赛成绩排序
(1)提出问题:对运动会比赛成绩进行排序,教师可以使用电子表格软件让学生体会排序前后数据发生的变化。同时,让学生了解不同类型数据的升序
和降序有什么规则?
(2)分组讨论:教师可以先不提出计算机排序的方法,而是让学生充分发挥自己的想象力,寻找排序的方案,用自然语言记录排序的过程,并讨论哪种
方案能更快地完成排序
(3)提示:在讨论排序方案的时候,学生往往会忽略一些细节问题,比如数据如何互换位置等,所以教师要在学生记录排序过程的时候适时地提出这个
问题
2.分析排序算法:在自然语言所描述的排序过程的基础上,总结出排序算法
(1)如果学生提出类似冒泡排序的算法,可以直接引入下面的讨论,否则,由教师演示“冒泡排序”的过程,完成活动一的步骤1~2
(2)分组讨论:“冒泡排序”算法的原理
(3)思考:数组在排序算法中的作用是什么?数组的下标在排序算法中的作用是什么?
(4)根据算法编写程序,完成活动一的步骤3
3.介绍“学习指引”中的“排序算法”
排序算法的本节教学的一个重点,主要是让学生了解冒泡排序和选择排序的过程,在教学中,教师可以用对比的方法比较这两种排序方法,从而达到深入理解的目的。其中,选择排序要涉及数组,教师应该复习关于数组的知识,而选择排序中最值的获得要涉及数组的值和数组的下标,这些关系比较容易混淆,是学生理解上的难点,教师可以通过实验(比如学生按照高矮排序等),让学生亲身体会。
4.思考:算法是如何实现升序和降序的?
5.开始活动二:查找运动员比赛成绩
教材的活动二引用了查找试卷的活动,但为了保持一致,建议用查找某个参赛号的运动员是否存在来代替。
(1)提问:如果只知道某运动员的参赛号,要求确认该运动员的资料是否存在(2)分组讨论:如果人工查找,该如何操作,请用自然语言描述你的查找过程(3)思考:运动员的参赛号和运动员的资料是如何关联起来的?
(4)设计算法
(5)编写程序
6.介绍“学习指引”中的“查找算法”
查找算法是本节的另一重点,包括顺序查找和二分法查找两种,其中二分法查找是教学的难点,首先要让学生理解二分法查找的前提条件是有序数列,教师可以通过对比有序数列的查抄和无序数列的查找让学生理解这一点,而二分法查找更关键的内容在于如何获得中间位置,这是一个难点,教师并不一定要忙着提供答案,可以让学生提出取中间位置的算式,然后用实验数据代入,最后确定正确的算式。
7.开始活动三:实现运动会管理的应用程
(1)复习第二章第一节VB可视化开发环境的相关内容,为下面的学习打好基础