




已阅读5页,还剩236页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,全国计算机等级考试二级公共基础,计算机科学与技术系,2,考试方式,1、公共基础的考试方式为笔试,与C语言(VisualBASIC、VisualFoxPro、Java、Access、VisualC+)的笔试部分合为一张试卷。公共基础部分占全卷的30分。2、公共基础知识有10道选择题和5道填空题。(15*2),3,基本要求,1.掌握算法的基本概念。2.掌握基本数据结构及其操作。3.掌握基本查找和排序算法。4.掌握逐步求精的结构化程序设计方法。5.掌握软件工程的基本概念。6.掌握数据库的基本知识,了解关系数据库的设计。,4,学习方法,基本概念要理解理解的基础上适当记忆一些概念多做练习,从练习中总结与所学的知识结合起来,以增加对知识的理解能力,5,考试内容:第一章,1.算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。5.线性单链表、双向链表与循环链表的结构及其基本运算。6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。7.顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。,6,考试内容:第二章,1.程序设计方法与风格。2.结构化程序设计。3.面向对象的程序设计方法,对象,方法,属性及继承与多态性。,7,考试内容:第三章,1.软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。2.结构化分析方法,数据流图,数据字典,软件需求规格说明书。3.结构化设计方法,总体设计与详细设计。4.软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。5.程序的调试,静态调试与动态调试。,8,考试内容:第四章,1.数据库的基本概念:数据库,数据库管理系统,数据库系统。2.数据模型,实体联系模型及E-R图,从E-R图导出关系数据模型。3.关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。4.数据库设计方法和步骤:需求分析、概念设计、逻辑设计和物理设计的相关策略。,9,第一章数据结构与算法,10,1.1算法,1.1.1算法的基本概念算法:是指解题方案的准确而完整的描述。(是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。)算法不等于程序,也不等于计算机方法,程序的编制不可能优于算法的设计。,11,特征包括:(1)可行性;(2)确定性,算法中每一步骤都必须有明确定义,不允许有模棱两可的解释,不允许有多义性;(3)有穷性,算法必须能在有限的时间内做完,取能在执行有限个步骤后终止,包括合理的执行时间的含义;(4)拥有足够的情报。,12,算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。(1)算法中对数据的运算和操作计算机指令系统:一个计算机系统能执行的所有指令的集合。基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。,13,(2)算法的控制结构:一个算法的功能不仅取决于所选用的操作,而且还与各操作之间的执行顺序有关。算法中各操作之间的执行顺序称为算法的控制结构。描述算法的工具通常有传统流程图、NS结构化流程图、算法描述语言等。一个算法一般都可以用顺序、选择、循环三种基本控制结构组合而成。,14,算法设计基本方法(1)列举法:根据提出的问题,列举所有可能的情况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的。(2)归纳法:通过列举少量的特殊情况,经过分析,最后找出一般的关系。(3)递推:是指从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果。,15,算法设计基本方法(续)(4)递归:将问题逐层分解的过程,实际上并没有对问题进行求解,而只是当解决到最后那些最简单的总是后,再沿着原来分解的逆过程逐步进行综合,(5)减半递推技术:所谓“减半”,是指将问题材的规模减半,而问题的性质不变;所谓“递推”,是指重复“减半”的过程。(6)回溯法:通过对问题的分析,找出一个解决总是的线索,然后沿着这个线索,然后沿着这个线索逐步试探,对于每一步的试探,若试探成功,就得到问题的解,若试探失败,就逐步回退,换别的路线再进行试探。,16,1.1.2算法的复杂度算法复杂度:算法时间复杂和算法空间复杂度。1.算法的时间复杂度算法时间复杂度是指执行算法所需要的计算工作量。算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即算法的工作量=f(n),17,(1)平均性态:是指用各种特定输入下的基本运算次数的加权平均值来度量算法的工作量。算法的平均性态定义:(2)最坏情况复杂性:是指在规模为n时,算法所执行的基本运算的最大次数。O(1)常量级O(n)线性级O(n2)平方级,18,时间复杂度举例1X=X+1S=0,此算法的基本操作是赋值语句。执行两条语句各一次,共2次,与规模无关。时间复杂度为(1),即常量阶。,执行次数:2时间复杂度:O(1),19,时间复杂度举例2Fori=1tonx=x+1s=s+xNexti,执行次数为:2n其时间复杂度为:O(n)即时间复杂度为线性阶。,20,时间复杂度举例3Fori=1tonForj=1tonx=x+1s=s+xnextjNexti,执行次数2n2其时间复杂度为:O(n2)即时间复杂度为平方阶。,21,2.算法空间复杂度算法空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。算法的空间复杂度和时间复杂度没有直接的联系。,22,例题讲解,23,算法的时间复杂度是指A)执行算法程序所需要的时间B)算法程序的长度C)算法执行过程中所需要的基本运算次数D)算法程序中的指令条数算法的基本特征是可行性、确定性、【1】和拥有足够的情报。算法的空间复杂度是指A)算法程序的长度B)算法程序中的指令条数C)算法程序所占的存储空间D)执行过程中所需要的存储空间在计算机中,算法是指A)加工方法B)解题方案的准确而完整的描述C)排序方法D)查询方法,24,1.2数据结构的基本概念,数据结构研究的三个方面:(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。讨论以上问题的主要目的是为了提高数据的效率。所谓提高数据处理的效率,主要包括两个方面:一是提高数据处理的速度,二是尽量节省在数据处理过程中所占用的计算机存储空间。,25,算法分析的目的是A)找出数据结构的合理B)找出算法中输入和输出之间的关系C)分析算法的易懂性和可靠性D)分析算法的效率以求改进算法的工作量大小和实现算法所需的存储单元多少分别称为算法的【1】。,26,1.2.1什么是数据结构数据结构是指反映数据元素之间关系的数据元素的集合的表示。1、数据的逻辑结构数据结构包含:(1)表示数据元素的信息;(2)表示各数据元素之间的前后件关系。逻辑结构是指反映数据元素之间逻辑关系的数据结构。,27,2、数据的存储结构数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。数据元素在计算机存储空间中的位置关系可能与数据元素的逻辑结构不同。数据的存储结构有顺序、链接、索引等。,28,1.2.2数据结构的图形表示例如:一年四季的数据结构可以用图形来表示。,春,夏,秋,冬,29,用图形表示数据结构B=(D,R),其中D=di|1link=p-link;,p-link=s;,算法评价,77,p,a,b,c,删除:删除链表中b结点,已知p指向a结点,p-link=p-link-link,算法评价,78,循环链表(circularlinkedlist)循环链表是表中最后一个结点的指针指向头结点,使链表构成环状特点:从表中任一结点出发均可找到表中其他结点,提高查找效率操作与单链表基本一致,循环条件不同单链表p或p-link=NULL循环链表p或p-link=H,79,双向链表(doublelinkedlist)单链表具有单向性的缺点,L,空双向循环链表:,非空双向循环链表:,L,A,B,p-prior-next=p=p-next-proir;,80,若是栈中元素的数目变化范围较大或不清楚栈元素的数目,就应该考虑使用链式存储结构。人们将用链式存储结构表示的栈称作“链栈”。链栈通常用一个无头结点的单链表表示。如图所示。由于栈的插入删除操作只能在一端进行,而对于单链表来说,在首端插入删除结点要比尾端相对地容易一些,所以,我们将单链表的首端作为栈顶端,即将单链表的头指针作为栈顶指针。,栈的链式存储,81,82,队列的链式存储结构简称为链队列,它是限制仅在表头删除和表尾插入的单链表。显然仅有单链表的头指针不便于在表尾做插入操作,为此再增加一个尾指针,指向链表的最后一个结点。于是,一个链队列由一个头指针和一个尾指针唯一确定。添加头节点。和顺序队列类似,我们也是将这两个指针封装在一起,front,rear,队列的链式存储,83,例题讲解,84,链表不具有的特点是A)不必事先估计存储空间B)可随机访问任一元素C)插入删除不需要移动元素D)所需空间与线性表长度成正比数据结构分为逻辑结构与存储结构,线性链表属于【1】。数据结构中,与所使用的计算机无关的是数据的A)存储结构B)物理结构C)逻辑结构D)物理和存储结构数据的逻辑结构有线性结构和【1】两大类。,85,数据处理的最小单位是A)数据B)数据元素C)数据项D)数据结构数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及A)数据的存储结构B)计算方法C)数据映象D)逻辑存储线性表的顺序存储结构和线性表的链式存储结构分别是A)顺序存取的存储结构、顺序存取的存储结构B)随机存取的存储结构、顺序存取的存储结构C)随机存取的存储结构、随机存取的存储结构D)任意存取的存储结构、任意存取的存储结构,86,顺序存储方法是把逻辑上相邻的结点存储在物理位置【2】的存储单元中。根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分成A)动态结构和静态结构B)紧凑结构和非紧凑结构C)线性结构和非线性结构D)内部结构和外部结构数据结构包括数据的逻辑结构、数据的【2】以及对数据的操作运算。数据的基本单位是【5】。,87,下列叙述中,错误的是A)数据的存储结构与数据处理的效率密切相关B)数据的存储结构与数据处理的效率无关C)数据的存储结构在计算机中所占的空间不一定是连续的D)一种数据的逻辑结构可以有多种存储结构数据的存储结构是指A)数据所占的存储空间B)数据的逻辑结构在计算机中的表示C)数据在计算机中的顺序存储方式D)存储在外存中的数据,88,下列叙述中,错误的是A)数据的存储结构与数据处理的效率密切相关B)数据的存储结构与数据处理的效率无关C)数据的存储结构在计算机中所占的空间不一定是连续的D)一种数据的逻辑结构可以有多种存储结构线性表若采用链式存储结构时,要求内存中可用存储单元的地址A)必须是连续的B)部分地址必须是连续的C)一定是不连续的D)连续不连续都可以,89,栈和队列的共同特点是A)都是先进先出B)都是先进后出C)只允许在端点处插入和删除元素D)没有共同点如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是A)e3,e1,e4,e2B)e2,e4,e3,e1C)e3,e4,e1,e2D)任意顺序一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用A)栈B)堆C)数组D)链表当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【2】。,90,栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是A)ABCEDB)DCBEAC)DBCEAD)CDABE栈通常采用的两种存储结构是A)顺序存储结构和链表存储结构B)散列方式和索引方式C)链表存储结构和数组D)线性存储结构和非线性存储结构栈和队列通常采用的存储结构是【1】。下列数据结构中,按先进后出原则组织数据的是A)线性链表B)栈C)循环链表D)顺序表,91,由两个栈共享一个存储空间的好处是A)减少存取时间,降低下溢发生的机率B)节省存储空间,降低上溢发生的机率C)减少存取时间,降低上溢发生的机率D)节省存储空间,降低下溢发生的机率下列关于栈的叙述中正确的是)在栈中只能插入数据B)在栈中只能删除数据C)栈是先进先出的线性表D)栈是后进先出的线性表下列关于队列的叙述中正确的是)在队列中只能插入数据B)在队列中只能删除数据C)队列是先进先出的线性表D)队列是后进先出的线性表,92,1.6树与二叉树,树是一种简单的非线性结构,所有元素之间具有明显的层次特性。在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点,简称树的根。每一个结点可以有多个后件,称为该结点的子结点。没有后件的结点称为叶子结点。在树结构中,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为树的度。树的最大层次称为树的深度。,93,树是一种常用的非线性结构。我们可以这样定义:树是n(n0)个结点的有限集合。若n=0,则称为空树;否则,有且仅有一个特定的结点被称为根,当n1时,其余结点被分成m(m0)个互不相交的子集T1,T2,.,Tm,每个子集又是一棵树。由此可以看出,树的定义是递归。,94,(C)是有13个结点的树,其中A是根,其余结点分成3个子集:T1、T2、T3。都是根A的子树,且本身也是一棵树。例如:T1其根为B,两棵子树为T11=FT12=E,K,L,T12又是一棵子树,树根为F,K和L是E的两个互不相交的子集。,95,结点:数据元素的内容及其指向其子树根的分支统称为结点。结点的度(Degree):结点的分支数,即结点拥有的子树数。终端结点(叶子leaf):度为0的结点。非终端结点:度不为0的结点。结点的层次:树中根结点的层次为1,根结点子树的根为第2层,以此类推。树的度:树中所有结点度的最大值。树的深度:树中所有结点层次的最大值。有序树、无序树:如果树中每棵子树从左向右的排列拥有一定的顺序,不得互换,则称为有序树,否则称为无序树。,术语,96,1.6.2二叉数及其基本性质,1.定义定义:二叉树是另一种树形结构。它与树形结构的区别是:(1)每个结点最多有两棵子树;(2)子树有左右之分。二叉树也可以用递归的形式定义。即:二叉树是n(n0)个结点的有限集合。当n=0时,称为空二叉树;当n0时,有且仅有一个结点为二叉树的根,其余结点被分成两个互不相交的子集,一个作为左子集,另一个作为右子集,每个子集又是一个二叉树。,97,GH,DEF,BC,A,98,二叉树的特点:(1)非空二叉树只有一个根结点;(2)每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。,99,二叉树的5种形态:,(a),(b),(c),(d),(e),(a)空树(b)只有根结点的二叉树(c)右子树为空的二叉树(d)左子树为空的二叉树(e)左、右子树均非空的二叉树,100,二叉树具有下列5个重要的性质。【性质1】在二叉树的第i层上最多有2i-1个结点(i1)。二叉树的第1层只有一个根结点,所以,i=1时,2i-1=21-1=20=1成立。假设对所有的j,1ji成立,即第j层上最多有2j-1个结点成立。若j=i-1,则第j层上最多有2j-1=2i-2个结点。由于在二叉树中,每个结点的度最大为2,所以可以推导出第i层最多的结点个数就是第i-1层最多结点个数的2倍,即2i-2*2=2i-1。,二叉树的性质,101,【性质2】深度为K的二叉树最多有2K-1个结点(K1)。由性质1可以得出,1至K层各层最多的结点个数分别为:20,21,22,23,.,2K-1。这是一个以2为比值的等比数列,前n项之和的计算公式为:,102,其中a1为第一项,an为第k项,q为比值。可以得到,该数列前K项之和为:,103,【性质3】对于任意一棵二叉树BT,如果度为0的结点(叶子)个数为n0,度为2的结点个数为n2,则n0=n2+1。证明:1.假设度为1的结点个数为n1,结点总数为n。因为在二叉树中,所有结点的度均小于或等于2,所以结点总数为:n=n0+n1+n2(1),104,2.设B为二叉树中的分支数从入支的角度看,即前驱结点的角度看,二叉树中,除根结点之外,其余每个结点都有一个且只有一个前驱结点,即有一个从上向下的分支指向(即占有一个分支),所以,总的结点个数n与分支数B之间的关系为:n=B+1。(2),105,从出支的角度看,即后继结点的角度看,因为在二叉树中,度为0的结点没有后继结点,即不占分支,度为1的结点有一个后继结点,产生1个分支,度为2的结点产生2个分支,所以分支数B可以表示为:B=n1+2n2。(3)将此式代入上式,得:n=n1+2n2+1(4)用(1)式减去(4)式,并经过调整后得到:n0=n2+1。,106,满二叉树:如果一个深度为K的二叉树拥有2K-1个结点,则将它称为满二叉树。,107,108,完全二叉树:有一棵深度为h,具有n个结点的二叉树,若将它与一棵同深度的满二叉树中的所有结点按从上到下,从左到右的顺序分别进行编号,且该二叉树中的每个结点分别与满二叉树中编号为1n的结点位置一一对应,则称这棵二叉树为完全二叉树。,109,一棵满二叉树一定是一棵完全二叉树,而一棵完全二叉树不一定是满二叉树。,110,完全二叉树的特点:(1)叶子结点只可能在层次最大的两层上出现(2)对任意结点,若其右分支下的子孙的最大层次是l,则其左分支下的子孙的最大层次必是l或l+1,111,【性质4】具有n个结点的完全二叉树的深度为log2n+1。其中,log2n的结果是不大于log2n的最大整数。证明:假设具有n个结点的完全二叉树的深度为K,则根据性质2可以得出:2K-1-1n2K-1将不等式两端加1得到:2K-1nn,则结点i没有左孩子(结点i为叶子结点);否则其左孩子结点的编号为2i。(3)如果2i+1n,则结点i没有右孩子;否则其右孩子结点的编号为2i+1。,113,2i+2,2i2i+12i+22i+3i+12i2i+1,i,ii+1,114,二叉树的基本性质:,(1)在二叉树的第k层上,最多有2k-1(k1)个结点;(2)深度为m的二叉树最多有2m-1个结点;(3)度为0的结点(即叶子结点)总是比度为2的结点多一个;(4)具有n个结点的二叉树,其深度至少为log2n+1,其中log2n表示取log2n的整数部分;(5)具有n个结点的完全二叉树的深度为log2n+1;,115,满二叉树是指除最后一层外,每一层上的所有结点有两个子结点,则k层上有2k-1个结点深度为m的满二叉树有2m-1个结点。完全二叉树是指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。,116,(6)设完全二叉树共有n个结点。如果从根结点开始,按层序(每一层从左到右)用自然数1,2,.n给结点进行编号(k=1,2.n),有以下结论:若k=1,则该结点为根结点,它没有父结点;若k1,则该结点的父结点编号为INT(k/2);若2kn,则编号为k的结点的左子结点编号为2k;否则该结点无左子结点(也无右子结点);若2k+1n,则编号为k的结点的右子结点编号为2k+1;否则该结点无右子结点。,117,1.6.3二叉树的存储结构二叉树通常使用链式存储结构。链式存储结构常见的二叉树结点结构如下所示:,118,GH,DEF,BC,A,GH,DEF,BC,A,BT,119,这种存储结构的特点是寻找孩子结点容易,双亲比较困难。因此,若需要频繁地寻找双亲,可以给每个结点添加一个指向双亲结点的指针域,其结点结构如下所示。,120,1.6.4二叉的遍历二叉树是一种非线性的数据结构,在对它进行操作时,总是需要逐一对每个数据元素实施操作,这样就存在一个操作顺序问题,由此提出了二叉树的遍历操作。所谓遍历二叉树就是按某种顺序访问二叉树中的每个结点一次且仅一次的过程。这里的访问可以是输出、比较、更新、查看元素内容等等各种操作。二叉树的遍历方式为:按根、左子树和右子树三个部分进行访问;下面我们将分别进行讨论。,121,1.按根、左子树和右子树三部分进行遍历遍历二叉树的顺序存在下面三种顺序DLR、LDR和LRD,根据根访问的位置不同分别被称为先序遍历、中序遍历和后序遍历。,122,(1)先序遍历若二叉树为空,则结束遍历操作;否则访问根结点;先序遍历左子树;先序遍历右子树。(2)中序遍历若二叉树为空,则结束遍历操作;否则中序遍历左子树;访问根结点;中序遍历右子树。,123,(3)后序遍历若二叉树为空,则结束遍历操作;否则后序遍历左子树;后序遍历右子树;访问根结点。,124,GH,BC,A,DEF,先序序列:ABDGCEFH中序序列:DGBAECHF后序序列:GDBEHFCA,下面是一棵二叉树及其经过三种遍历得到的相应序列。,125,例题讲解,126,已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是A)acbedB)decabC)deabcD)cedba已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为A)GEDHFBCAB)DGEBHFCAC)ABCDEFGHD)ACBFEDHG树是结点的集合,它的根结点数目是A)有且只有1B)1或多于1C)0或1D)至少2,127,在深度为5的满二叉树中,叶子结点的个数为A)32B)31C)16D)15若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是A)bdgcefhaB)gdbecfhaC)bdgaechfD)gdbehfca在树结构中,树根结点没有【1】。下列叙述中正确的是A)线性表是线性结构B)栈与队列是非线性结构C)线性链表是非线性结构D)二叉树是线性结构,128,具有3个结点的二叉树有A)2种形态B)4种形态C)7种形态D)5种形态设有下列二叉树:对此二叉树前序遍历的结果为A)ZBTTCPXAB)ATBZXCTPC)ZBTACTXPD)ATBZXCPT,129,设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为A)12B)13C)14D)15设有下列二叉树:对此二叉树的中序遍历的结果为A)ABCDEFB)DBEAFCC)ABDECFD)DEBFCA,130,设树T的深度为4,其中度为1、2、3、4的结点个数分别为4、2、1、1。则T中的叶子结点数为A)8B)7C)6D)5设一棵完全二叉树共有700个结点,则该二叉树中有()个叶子结点。在一个容量为15的循环队列中,若头指针front=6,尾指针rear=9,则该循环队列中共有()个元素。设一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为()。,131,1.7查找技术,查找是在一个给定的数据结构中,根据给定的条件查找满足条件的结点。不同的数据结构采用不同的查找方法。查找的效率直接影响数据处理的效率。查找的结果:查找成功:找到满足条件的结点查找失败:找不到满足条件的结点。,132,1.7.1顺序查找过程:对给定的一关键字K,从线性表的一端开始,逐个进行记录的关键字和K的比较,直到找到关键字等于K的记录或到达表的另一端。可以采用从前向后查,也可采用从后向前查的方法。在平均情况下,大约要与表中一半以上元素进行比较,效率较低。平均查找长度较大。在下面两种情况下只能采取顺序查找:a.线性表为无序表(元素排列是无序的);b.即使是有序线性表,但采用的是链式存储结构。,133,1.7.2二分法查找二分法查找只适用于顺序存储的有序表。对于长度为n的有序线性表,最坏情况只需比较log2n次。,134,假设查找表存放在数组a的a1an中,且升序,查找关键字值为k。折半查找的主要步骤为:(1)置初始查找范围:low=1,high=n;(2)求查找范围中间项:mid=(low+high)/2(3)将指定的关键字值k与中间项amid.key比较若相等,查找成功,找到的数据元素为此时mid指向的位置;,135,若小于,查找范围的低端数据元素指针low不变,高端数据元素指针high更新为mid-1;若大于,查找范围的高端数据元素指针high不变,低端数据元素指针low更新为mid+1;(4)重复步骤(2)、(3)直到查找成功或查找范围空(lowhigh),即查找失败为止。(5)如果查找成功,返回找到元素的存放位置,即当前的中间项位置指针mid;否则返回查找失败标志。,136,查找23和79的过程如下图:,mid=(low+high)/2不进位取整,(08,14,23,37,46,55,68,79,91),(08,14,23,37,46,55,68,79,91),(08,14,23,37,46,55,68,79,91),(08,14,23,37,46,55,68,79,91),(08,14,23,37,46,55,68,79,91),(08,14,23,37,46,55,68,79,91),(08,14,23,37,46,55,68,79,91),137,1.8排序技术,排序是指将一个无序序列整理成按值非递减顺序排列的有序序列。1.8.1交换排序所谓交换类排序法是指借助数据元素之间的互相交换进行的排序的一种方法。1.冒泡排序冒泡排序是一种最简单的交换类排序方法,它是通过相邻数据元素的交换逐步将线性表变成有序。冒泡排序法,需要比较的次数为n(n-1)/2;.块速排序,138,.8.2插入类排序简单插入排序法最坏情况需要n(n-1)/2次比较;.希尔排序法最坏情况需要O(n1.5)次比较。,139,例如:,162512304711233691831,第一趟希尔排序,设增量d=5,112312918162536304731,第二趟希尔排序,设增量d=3,918121123162531304736,第三趟希尔排序,设增量d=1,911121618232530313647,140,1.8.3选择类排序法,(1)简单选择排序法最坏情况需要n(n-1)/2次比较;(2)堆排序法最坏情况需要O(nlog2n)次比较。,141,例题讲解,142,在长度为n的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为【2】。长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【1】。假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为A)log2nB)n2C)O(n1.5)D)n(n-1)/2已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是A)堆排序B)直接插入排序C)快速排序D)直接选择排序,143,冒泡排序算法在最好的情况下的元素交换次数为【1】。在最坏情况下,堆排序需要比较的次数为【2】。最简单的交换排序方法是A)快速排序B)选择排序C)堆排序D)冒泡排序排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【1】和选择排序等。,144,希尔排序属于A)交换排序B)归并排序C)选择排序D)插入排序对长度为n的线性表进行顺序查找,在最坏的情况下所需要的比较次数为)n+1B)nC)(n+1)/2D)n/2,145,第二章程序设计基础,146,2.1程序设计方法和风格,程序设计方法和技术主要经过了结构化程序设计和面向对象程序设计。程序是由人编写出来的,为了测试和维护程序,往往还需要阅读和跟踪程序,因此程序设计风格应该强调简单和清晰。“清晰第一,效率第二”的观点已成为主导的设计风格。要形成良好的程序设计风格,主要应注意和考虑下述4因素:,147,1.源程序文档化符号名的命名程序注释(序言性注释和功能性注释)程序的视觉组织2.数据说明的方法数据说明的次序应该规范化说明语句中变量安排规范化使用注释对复杂数据结构进行说明,148,3.语句的结构在一行内写一条语句程序编写应优先考虑清晰性除非对效率有特殊要求,程序编写要做到清晰第一,效率第二首先要保证程序正确,然后才要求提高速度避免使用临时变量而使程序的可读性下降避免不必要的转移(GOTO语句)4.输入和输出对所有输入数据进行校验和合理性检查,149,2.2结构化程序设计,2.2.1结构化程序设计的原则自顶向下逐步求精模块化限制使用goto语句,150,2.2.2结构化程序的基本结构与特点顺序结构选择结构重复(循环)结构总之,结构化程序设计方法的优点:1.程序易于理解,使用和维护。2.提高了编程工作的效率,降低了软件开发的成本。,151,2.2.3结构化程序设计原则和方法的应用(P43)。,152,2.3面向对象的程序设计,面向对象方法已经发展成为主流的软件开发方法。主要优点:与人类习惯的思维方法一致稳定性好可重用性好易于开发大型软件产品可维护性好,153,2.3.2面向对象方法的基本概念对象(Object)对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。可以表示客观世界中的任何实体,可以是具体的,也可以是抽象的。对象有5个基本特点(P46),154,类(Class)和实例(Instance)将属性、操作相似的对象归为类。类是具有共同属性、共同方法的对象的集合。对象则是对应的类的一个实例。消息(Message)对象间的这种相互合作需要一个机制协助进行,这样的机制叫做“消息”。消息是实例和实例之间传递的信息。消息由接收消息的对象的名称+消息标识符参数组成。例如:MyCircle.Show(GREEN),155,继承(Inheritance)继承是父类和子类之间共享数据的方法的机制一个子类可以继承它的父类(或祖先类)中的属性和操作子类中可以定义自己的属性和操作单重继承、多重继承继承性的优点是:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余信息,提高了软件的可重用性,便于软件修改维护。,156,157,多态性(Polymorphism)不同的对象收到同一消息可以产生完全不同的行动,这一现象叫做多态性多态的实现受到继承的支持同样的消息可以发送给不同的对象。,158,例题讲解,159,结构化程序设计的3种结构是A)顺序结构、选择结构、转移结构B)分支结构、等价结构、循环结构C)多分支结构、赋值结构、等价结构D)顺序结构、选择结构、循环结构在设计程序时,应采纳的原则之一是A)不限制goto语句的使用B)减少或取消注解行C)程序越短越好D)程序结构应有助于读者理解,160,结构化程序设计主要强调的是A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性对建立良好的程序设计风格,下面描述正确的是A)程序应简单、清晰、可读性好B)符号名的命名只要符合语法C)充分考虑程序的执行效率D)程序的注释可有可无在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,现在,与程序的效率相比,人们更重视程序的A)安全性B)一致性C)可理解性D)合理性,161,程序的3种基本控制结构是A)过程、子过程和分程序B)顺序、选择和重复C)递归、堆栈和队列D)调用、返回和转移下列叙述中,不属于结构化程序设计方法的主要原则的是A)自顶向下B)由底向上C)模块化D)限制使用goto语句对象实现了数据和操作的结合,是指对数据和数据的操作进行A)结合B)隐藏C)封装D)抽象,162,在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送A)调用语句B)命令C)口令D)消息下列对象概念描述错误的是A)任何对象都必须有继承性B)对象是属性和方法的封装体C)对象间的通讯靠消息传递D)操作是对象的动态属性,163,在面向对象的程序设计中,类描述的是具有相似性质的一组【3】在面向对象方法中,类之间共享属性和操作的机制称为【2】。一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【3】。,1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 班级工作管理经验介绍
- 油墨基础知识
- 无锡学院《企业内部控制》2023-2024学年第二学期期末试卷
- 郑州汽车工程职业学院《数据分析与应用》2023-2024学年第一学期期末试卷
- 重庆旅游职业学院《情绪行为异常儿童教育》2023-2024学年第二学期期末试卷
- 武汉音乐学院《舞蹈创编(一)》2023-2024学年第二学期期末试卷
- 中央民族大学《高级德语II》2023-2024学年第一学期期末试卷
- 南京工业职业技术大学《刑法与刑事诉讼理论与实务》2023-2024学年第二学期期末试卷
- 中国美术学院《基础笔译》2023-2024学年第二学期期末试卷
- 《交通工具图标识别》课件
- 公路水泥混凝土路面施工技术规范(JTGF30-2024)
- 高速公路服务区服务规范
- 外研版(三起点)小学英语三年级下册全册同步练习(含答案)
- 社区工作者综合能力考试基础知识试题及答案
- 露营市场分析
- 10S505 柔性接口给水管道支墩
- DB23T 3726-2024 滑雪板维修服务技术规程
- 2024-2030年吸附树脂行业市场发展分析及发展趋势与投资前景研究报告
- 管理制度模板:火电厂检修人员岗位职责(共7篇)
- 《教育向美而生-》读书分享课件
- 手机摄影教程
评论
0/150
提交评论