1、一级指导教师评级教案 第十二章数据结构基础知识,教学内容:本节课是参照清华大学出版社出版的东北三省重点高中计算机统编教材高中信息学实验教材第十二章“数据结构 ”设计的,本人执笔该书此章。授课时间:45分钟;授课对象:高一学生。,一、 教学目标1、认知要求:任何程序均可用顺序结构、分支结构和循环结构这三种基本逻辑结构组合而成。 信息学复赛的一般流程是:读懂题意分析解题途径和方法生成解题算法 根据算法编写程序上机调试运行并输出结果检验结果。 2、操作要求:学生能在计算机上把算法实现,利用高级语言(Pascal或c+)输入、调试、运行程序并对错误进行修改。3、情感要求:投入、自我展示、自我激励、合作
2、学习、体验成功、激发求知欲。4、能力目标:了解“由特殊到一般”的程序设计思想和“自顶向下、逐步求精”的程序设计方法;逐步培养学生发现问题、分析问题、解决问题的能力。5、思想教育:培养学生“理论与实践相结合”的辩证唯物主义思想;培养学生创新意识,激发求知欲。,二、教学重点、难点重点:算法在计算机上的实现。难点:程序的优化。,三、教学对象分析学生已经知道程序设计的一般步骤;会使用pascal语言;会选择程序结构。但对一些算法不太了解;讲课时应该予以补充或提示。,四、教学设想信息学奥赛中的程序设计,一向被认为是枯燥乏味而难教难学。如何激发学生的学习兴趣,充分调动学习的积极性,使学生掌握使用计算机解题
3、的基本流程和基本方法,掌握程序的三种基本逻辑结构,本节课使用了任务驱动的教学方法,注重学习过程,注重学习能力的锻炼和培养的理念。教学方法:1、教师创设情景,提出任务,即情景教学法、任务驱动法、引导发现法、探究式、师生互动;2、学生自主学习、与他人合作完成任务,在完成任务的过程中学习,在学习的过程中完成任务。,六、教学过程问题引入,创设情境(时间分配约:1分钟)引言: 学习数据结构不但可以加深对程序设计的了解,还可以更加灵活地应用计算机来解决一些实际问题。(设计思想:明确目的),五、教学方式:多媒体教学,网络教学。教学设备:计算机、大屏幕投影仪、实物投影仪。,“数据结构”是介绍程序设计中常用的基
4、本数据结构和相关算法的设计。大多数教科书采用类pascal语言,它是介于高级程序设计语言和伪语言之间的语言形式。,1211 数据结构的基本概念、数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。对计算机而言,数据的含义极为广泛,如图象、声音等都可以通过编码而归于数据的范畴。,、数据元素:是数据的基本单位,在计算机程序中能常作为一个整体进行考虑和处理。有时,一个数据元素可由若干个数据项组成。例:一本书的书目信息为一个数据元素,而书目信息中的每一项(如书名、作者名等)为一个数据项。数据项是数据的不可分割的最小单位。每个数据元素,都有类型和值两个属性
5、。数据元素的类型决定了把数据存到存储器时,分配的存储区的大小和数据值的二进制代码表达方式。数据元素的值将根据类型决定的二进制代码表示方式存储到分配给它的存储区中去。,逻辑表示:对于一个数据元素,用户面对的变量名称(标识符),类型,数值等,可称为它的逻辑表示。,存储表示或物理表示:实际运行程序时,对应分配的存储区,存储区地址及数值的代码表示等,可称为存储表示。,在程序设计语言中,涉及的数据元素,根据程序中引用的方法,大致分为三类:、常量引用:程序中对它的引用,直接使用其值。、变量引用:对处理的数据元素给以标识符,使之成为变量,对它们的引用通过标识符(变量名)引用。每个变量都有类型和值两个特征。变
6、量说明的作用:使计算机在编译时,在内存中留下相应的存储单元。变量的类型不同,计算机所分配的存储单元也不相同,而存储单元存放的是变量的值;变量的名字,则用于对变量的引用,根据引用的上下文它即可代表存储区的内容,也可代表存储区的地址、地址引用:指针类型,它的值不是通常意义的数据而是指分配的存储区的地址。指针变量的值是定义中指定的类型的数据元素的存储区地址。,、数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。,、结构:在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构。、集合基本结构 2 、线性结构、树形结构、图状结构或网状结构,12
7、12 数据的逻辑结构和物理结构数据结构可从逻辑上和物理上来说明,它们分别叫做数据的逻辑结构和物理结构。数据的逻辑结构:只抽象地反映数据元素集合的结构,即说明数据元素之间的顺序关系。数据的逻辑结构分为线性和非线性两类。它们的特征:是一个元素的直接后继元素可以是一个或多个。,数据的物理结构:又叫数据的存储结构,它表示数据在计算机中的存储方式。,数据在计算机中常用两种基本存储方式:、顺序存储结构将各数据元素,按照它的逻辑结构顺序存放到一组连续的存储单元中,这样逻辑上相邻的元素,在物理存储位置上也是相邻的。 顺序存储也称为线性存储。、链式存储结构:给每个结点增加一个指针域,用指针来体现数据元素之间的逻
8、辑关系。,讨论数据结构的目的是为了在计算机中实现对它的操作。操作的种类是没有限制的,可以根据需要而定义。 基本操作主要有以下几种:、插入:在数据结构中的指定位置上增添新的数据元素。、删除:删去数据结构中某个指定的数据元素。、更新:改变数据结构中某个数据元素的值。、查找:在数据结构中寻找满足某个特定要求的数据元素(的位置和值)。、排序:(在线性结构中)重新安排数据元素之间的逻辑顺序关系,使之按值由小到大或由大到小的次序排列。,122 算法设计算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。算法有五个重要特性:、有穷性:一个算法必须总是(对任何合法的输入
9、值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。、确定性:算法中每一条指令必须有确切的含义,不会产生二义性。并且,在任何条件下,算法只有唯一的一条执行路径。、可行性:一个算法是能行的。即算法中描述的操作是执行有限次运算来实现的。、输入:一个算法有零个或多个输入。、输出:一个算法有一个或多个输出。,算法设计的要求:通常设计一个“好”的算法应考虑达到以下目标:、正确性:算法应当满足具体问题的需求。、可读性:算法主要是为了人的阅读与交流,其次才是机器执行。可读性好有助于人对算法的理解。、健壮性:当输入数据非法时,算法也能适当地做出反应或进行处理,而不会产生莫明其妙的输出结果。、效率与低存储量
10、需求。效率指的是算法执行时间。对于同一个问题如果有多个算法可以解决,执行时间短的算法效率高。存储量需求指算法执行过程中所需要的最大存储空间。算法描述的目的在于能方便地编写成求解具体问题的程序。,123 数据处理的基本方法1231 排序排序是计算机程序设计中的一种重要运算,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。排序分为内部排序和外部排序。内部排序:指的是待排序记录存放在计算机随机存储器中进行的排序过程。外部排序:指的是待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程。主要学习内部排序内部排序的主要方法有:、选择
11、排序;2、插入排序;3、快速排序;4、Shell排序 、堆排序;6、基数排序(Radix Sorting),、选择排序:选择排序的基本方法是:每步从待排序的记录中选出排序码最小的记录,顺序放在已排序的记录序列的最后,直到全部排完。,例:(),(),(),(),(),(),(),(),,选择排序的实质是在个数中找最小值(最大值)的多次重复执行。 算法如下:PROCEDURE PAIXUI(N);BEGINFOR I:=1 TO N DO READ(AI); 读入N个数FOR I:=1 TO N-1 DO 每循环一次选择一个最小的排序BEGINK:=I; K记录最小数的位置FOR J:=I+1 T
12、O N DO IF AKAJ THEN K:=J;K存关键字最小的记录T:=AI; AI:=AK; AK:=T;END;交换数据END;FORIFFOR I:=1 TO N DOWRITE(AI:5);输出N个已排序好的数END;,执行过程:、读入上页个数、循环 I:=1 K:=1FOR J:=I+1 TO 7 DOIF AKAJ THEN K:=J;T:=AI; AI:=AK; AK:=A; END;执行循环 以为步长从到,验算(走)一下算法:J:=2A1A2 K:=2 T:=8 A1=A2=3 A2=83 8J:=3A(2)A(3) K:=38 2T:=A1=3 A1=A3=2 A3=32
13、 8 3J=4A(3)A(4)3 52 8 3 5J=5A(3)A(5)3 92 8 3 5 9 ,J=6A(3)A(6) K:=63 1T=A1=2 A(1)=A6=1 A(6)=21 8 3 5 9 2J=7A(6)A(7)2 61 8 3 5 9 2 6,、插入排序插入排序的基本方法:每一步将一个待排序的数据按其大小插入到已排序的数据中的适当位置,直到全部插入完毕。、直接插入排序基本思想方法是:把原始的数据序列中第二个元素与第一个数据元素相比后,把该元素放到相对于第一个元素的合适位置,然后再取第三个元素与前两个元素相比较,并把该元素放到相对于前两个元素的合适位置,如此继续进行,直到最后排
14、序完毕。,例:待排序的记录共个,排序码分别为:、按从小到大顺序排列。排列过程如下:当时, 当时, 当时, 当时, 当时, 当时, 当时, 上图为直接插入排序,算法如下:PROCEDURE PAIXU2(N);BEGINFOR I:=1 TO N DO READ (AI);读入N个数FOR I:=2 TO N DO 每循环一次插入一个记录BEGINT:=AI; J:=I-1;保存待插入记录的关键字到T,J初值WHILE (J0) AND (TAJ) DOBEGINAJ+1:=AJ; 记录的关键字后移J:=J-1; J前移END; WHILEAJ+1:=T; 插入T这个数,T插入在AJ+1的位置上
15、END;FOREND.算法结束,、快速排序:快速排序是目前内部排序中,速度最快的排序方法。它的基本思想是:通过分部排序来完成整个数据系列的排序。先从数据系列中选一个元素,并将系列中所有比该元素小的元素都放到它的左边(或右边),将系列中所有比该元素大的元素都放到它的右边(或左边),这样就为该元素在表中找到了一个恰当的位置,这时整个数据系列就以该元素为界,分成两个子系列,然后再对其左边子系列和右边子系列分别进行同样的处理,又可得到若干个新的子系列,若干个子系列又进行同样处理如此下去,直到每个待处理的子系列的长度为时,处理结束。整个数据系列排序完毕。此过程是一个递归过程。,为了说明排序过程,用如下个
16、数说明执行过程(从小到大排序,数据存入数组)。 例:设某文件中待排序记录的排序码为:,L= R=8用指向数据头,指向数据尾,取作为比较对象。,、开始, 此时 则交换,且 L=2 R=8 、与比较, 则交换,且, L= R=7 、与比较, ,则交换,且 L=3 R=7 、与比较,则 L=4 R=7 、与比较,则 L=5 R=7 、与比较, 则交换,且- L=5 R=6 、与比较, 则交换,且-此时,一趟排序结束,形成两个子圈。, 第一部分 第二部分()快速排序第一趟,然后再按照此步骤分别对两个子系列部分排序,直到子系列长度为。 ()快速排序各趟排序状态。,例:快速排序算法 PROCEDURE qksort(R,L,P); 对RL到RP排序BEGINi:=L;L头指针 j:=P;P尾指针 X:=Ri;置初值REPEAT X任意选取一个记录(通常选第一个记录)WHILE(RjX) AND (ji) DOj:=j-1; 表尾指针前移IF iX的记录交换之Rj RI j:=j-1;表尾指针前移ENDIFENDIFUNTIL i=j;Ri:=X; i:=i+1; j:=j-1; X获得正确定位IF Lj THEN qksort(R,L,j); 递归处理,反复排序前一部分IF iP THEN qksort(R,i,P) : 反复排序后一部分END;算法结束,