计算机等级考试公共基础知识第2页计算机二级考试公共基础知识大纲数据结构与算法程序设计基础软件工程基础数据库设计基础这四个方面在试卷中出现的情况是:选择题10个(20分),填空题5个(10分),总分值占到了试卷卷面分的30%,是一个不小的比例。第3页计算机二级考试公共基础知识试卷分析章节考试时间数据结构与算法程序设计基础软件工程基础数据库设计基础2007年4月10分2分10分8分2007年9月12分4分8分6分2008年4月10分2分8分10分2008年9月10分2分8分10分2009年3月10分2分8分10分2009年9月10分2分8分10分2010年3月10分0分10分10分第4页算法⒈算法的基本概念2.算法复杂度的概念和意义一、基本数据结构与算法数据结构⒈数据结构的概念⒉线性表⒊栈和队列⒋树与二叉树⒌查找技术⒍排序技术对于等级考试,这个部分的考核重点主要在算法和数据结构的基本概念、二叉树(遍历、结点),还有排序和查找考试中也经常会涉及到。第5页算法的定义对解题方案准确而完整的描述称为算法。算法是程序设计的核心⒈算法的基本概念算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程(计算的方法)。在这个过程中,无论是形成解题思路(推理实现的算法)还是编写程序(操作实现的算法),都是在实施某种算法。例:n个数从大到小进行排序。有多种排序方法,常用的有冒泡排序、选择排序等。第6页2.算法的基本特征一个算法应该具有以下五个重要的特征:有穷性确定性输入输出可行性一个算法必须保证执行有限步之后结束;算法的每一步骤必须有确切的定义;一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身设定了初始条件;一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成第7页算法与计算机程序算法____是一组逻辑步骤程序——用计算机语言描述的算法3.算法的表示INPUTrS=3.14*r*rPRINTS开始输入RS=3.14*R*R输出S结束问题:输入园的半径,计算园的面积一个算法的表示需要使用一些语言形式。传统的算法-------图形法,如“流程图”和N-S图目前常用的方法-------使用伪码描述算法。第8页4.算法的两个基本要素:基本运算和操作算术运算关系运算逻辑运算数据传输控制结构顺序选择循环一是对数据对象的运算和操作;二是算法的控制结构。算法基本设计方法:列举法、归纳法、递推、递归、减半递推技术、回溯法第9页冒泡排序的方法:1.扫描整个线性表,逐次对相邻的两个元素进行比较,若为逆序,则交换;第一趟扫描的结果使最大的元素排到表的最后;2.除最后一个元素,对剩余的元素重复上述过程,将次大的数排到表的倒数第二个位置;3.重复上述过程;对于长度为n的线性表,冒泡排序需要对表扫描n-1遍。算法举例:n个数排序第10页5.算法评价评价一个算法优劣的主要标准是算法的执行效率和存储需求:时间复杂度:执行这个算法所需要的计算工作量一般可以用算法在执行过程中所需基本运算的执行次数来度量计算工作量空间复杂度:执行这个算法所需要的内存空间算法在执行过程中临时占用的存储空间时间复杂度它大致等于计算机执行一种简单操作所需的平均时间与算法中进行简单操作的次数的乘积。一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间、算法中的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个部分第11页一、算法对解题方案准确而完整的描述称为算法。算法不等于程序,程序的编制不可能优于算法的设计。算法评价:时间复杂度:执行这个算法所需要的计算工作量空间复杂度:执行这个算法所需要的内存空间第12页(1)在计算机中,算法是指______。A.查询方法B.加工方法C.解题方案的准确而完整的描述D.排序方法(2)下列叙述中正确的是(07年4月)A)算法的效率只与问题的规模有关,而与数据的存储结构无关B)算法的时间复杂度是指执行算法所需要的计算工作量C)数据的逻辑结构与存储结构是一一对应的D)算法的时间复杂度与空间复杂度一定相关(3)算法的有穷性是指(08年4月)A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(c)(B)算法习题:(A)第13页(4)算法的时问复杂度是指(2010年3月)A)算法的执行时间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的基本运算次数(5)算法的空间复杂度是指(09年9月)A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(6)下列叙述中正确的是(06年9月)A)一个算法的空间复杂度大,则其时间复杂度也必定大B)一个算法的空间复杂度大,则其时间复杂度必定小C)一个算法的时间复杂度大,则其空间复杂度必定小D)上述三种说法都不对(D)计算工作量(A)(D)第14页计算机在进行数据处理时,实际需要处理的数据元素一般有很多,而这些大量的数据元素都需要存放在计算机中,因此,大量的数据元素在计算机中如何组织,以便提高数据处理的效率,并且节省计算机的存储空间,这是进行数据处理的关键问题。二、数据结构程序=算法+数据结构数据结构是指相互有关联的数据元素的集合。一般来说,人们不会同时处理特征完全不同且互相之间没有任何关系的各类数据元素,对于具有不同特征的数据元素总是分别进行处理。一般情况下,在具有相同特征的数据元素集合中,各个数据元素之间存在有某种关系(即联系),这种关系反映了该集合中的数据元素所固有的一种结构。第15页二.数据结构数据结构是指相互有关联的数据元素的集合。数据结构是研究数据和数据之间关系的一门学科,它包括三个方面。(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。第16页1.逻辑结构数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。数据的逻辑结构包含:(1)表示数据元素的信息;(2)表示各数据元素之间的前后件关系。例:1.一年四季的数据结构B=(D,R)D={春,夏,秋,冬}R={(春,夏),(夏,秋),(秋,冬)}2.家庭成员的数据结构B=(D,R)D={父亲,儿子,女儿}R={(父亲,儿子),(父亲,女儿)}春夏秋冬数据结构的图形表示父亲儿子女儿第17页常见的逻辑结构有:线性结构、树形结构和图形结构。线性结构树形结构图形结构①线性结构结构中的每个元素之间存在一个对一个的关系;②树形结构结构中的每个元素之间存在一个对多个的关系;③图形结构或网状结构结构中的每个元素之间存在多个对多个的关系。其中,树形结构和图形结构统称为非线性结构。数据的逻辑结构可以用二元关系表示,也可以直观地用图形来表示。第18页2.存储结构(物理结构)计算机在实际进行数据处理时,被处理的各数据元素总是被存放在计算机的存储空间中,并且,各数据元素在计算机存储空间中的位置与它们的逻辑关系不一定是相同的,而且一般也不可能相同。如:一年四季家庭成员计算机存储空间怎样存放?存储结构指数据结构在计算机存储空间中的具体实现。常见的存储结构有:顺序存储结构链式存储结构索引存储结构•只抽象地反映数据元素之间的关系的结构,而不管其存储方式的数据结构称为逻辑结构。•一种数据结构可以根据需要表示成一种或多种存储结构。第19页3.数据的运算检索插入删除更新排序通常,一个数据结构中的元素结点可能是动态变化的。根据需要或在处理过程中,可以在一个数据结构中增加一个新结点(插入运算),也可以删除某个结点(删除运算),除此之外,对数据结构的运算还有查找、分类、合并、分解、复制和修改。在对数据结构的处理过程中,不仅数据结构中结点的个数在动态变化,而且,各数据元素之间的关系也有可能在动态地变化。如:无序表变有序表数据结构是研究数据和数据之间关系的一门学科,研究以下三方面内容:数据的逻辑结构数据的存储结构数据的运算下一页上一页停止放映第20|92页常见的数据结构1.线性表2.栈和队列3.树第21页1.线性表(LinearList)线性表是由n(n≥0)个数据元素a1,a2,…,ai,…,an组成的一个有限序列。简单的线性表春夏秋冬复杂的线性表记录102011001张三男…记录202011003李四女…记录3记录4第22页线性表的顺序存储结构顺序存储结构把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,顺序存储结构只存储结点的值,不存储结点间的关系,结点间的关系由存储单元的邻接关系来体现。…a1a2…ai…an…存储地址200020042000+4*(i-1)2000+4*(n-1)……占4个字节Loa(ai)=Loa(a1)+L*(i-1)第i个数的地址第一个数的地址L为该类型数所占的字节线性表的存储结构线性表的存储结构有两种:顺序存储结构链式存储结构第23页顺序表的插入和删除运算在线性表顺序存储情况下,要插入或删除一个元素,都会由于数据元素的移动而消耗大量的处理时间,所以这种存储方式对于小线性表或其中数据元素不经常变动的线性表是合适的。线性表的顺序存储结构称为顺序表。第24页顺序表的插入运算在第i个数据元素之前插入一个新的元素思想:1.将第n到i个元素均向后移动一个位置。2.将新元素放置在第i个位置。a1ai-1aian……例,在第i个元素前插入ba1ai-1aian……b第25页例,在第4个元素之前插入元素25。451293369512345657693325插入25第26页顺序表的删除运算删除第i个数据元素思想:a1ai-1ai+1an……a1ai-1ai+1an……ai1.删除第i个数据元素。2.将第i+1到n个元素均向前移动一个位置。第27页例,删除第4个元素25。删除25451292533691234567533695第28页线性表的链式存储结构线性表的链式存储结构称为线性链表。链式存储结构不要求逻辑上相邻的数据元素物理位置也相邻,而且各数据元素的存储顺序也是任意的。各数据元素的先后关系是由各结点的指针域指示。链式存储结构的每一个存储结点不仅存储结点的值,而且存储结点之间的关系:数据域指针域第29页应用举例——线性链表的存储结构设线性表为(a1,a2,a3,a4,a5)1a2923a1145a4106789a3510a50HEAD3a1a2a5a3a4HEAD319510线性链表的逻辑状态线性链表的物理状态1a12a23a34a45a567线性表的顺序存储结构注意:123此类编号不代表所在的地址单元的地址编码第30页线性链表的插入和删除运算采用链式存储结构,存储空间开销较大,但是进行插入和删除运算不会造成大量元素的移动。第31页优点:数据元素的插入、删除相对方便在a,b之间插入元素x:abpxss-next=p-nextp-next=s第32页删除元素b:acpbq=p-nextp-next=p-next-next?1)p-next=q-nextq=p-next2)3)free(q);第33页循环链表是另一种形式的链式存储结构。它的特点是表中最后一个结点的指针域指向头结点。a1a2a5a3a4HEAD319510第34页双向链表的存储结构提问:单向链表的缺点是什么?提示:如何寻找结点的直接前趋。双向链表可以克服单链表的单向性的缺点。在双向链表的结点中有两个指针域,其一指向直接后继,另一指向直接前趋。HEAD31510a2a3a4a1双向循环链表第35页线性表的存储结构有两种顺序存储结构注意:数据元素在计算机存储空间中的位置关系与它们的逻辑关系不一定是相同的。一个逻辑数据结构可以有多种存储结构