全国计算机等级考试二级公共基础知识.ppt
《全国计算机等级考试二级公共基础知识.ppt》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级公共基础知识.ppt(153页珍藏版)》请在冰豆网上搜索。
一算法的概念算法是对特定问题求解步骤的一种描述,算法的基本特征:
1)可行性:
组成算法的操作必须能够在计算机上实现。
2)确定性:
算法的每一步操作必须清晰无二义性。
3)有穷性:
算法必须在有限步内结束;4)有足够的情报:
0个或多个输入;1个或多个输出;算法描述的方法很多,如自然语言、框图、类C等,例:
求两个正整数m,n中的最大数MAX的算法
(1)若mn则max=m
(2)若m=n则max=n,程序=算法+数据结构,1、正确性:
(1)没有语法错误;
(2)对于几组输入数据能够得出满足要求的结果;(3)对于精心选择的典型而苛刻的几组输入数据能够得到满足要求的结果。
(4)对于一切合法的输入数据都能产生满足要求的结果。
2、可读性:
便于阅读、理解、调试、修改;3、健壮性:
对不合法的输入能作出正确的反映与处理;4、高效性:
执行时间短(时间复杂度)、需求存储空间省(空间复杂度),评价算法标准,1时间复杂度T(n)以求解问题的基本操作的执行次数作为算法时间的度量。
算法与算法分析,O(n3)称为矩阵相乘算法时间复杂度;O(n3)表示矩阵相乘算法执行时间与n3成正比,即O(n3)与n3同一数量级;,例:
n阶矩阵相乘的算法,For(i=1;i=n;i+)For(j=1;j=n;j+)cij=0;For(k=1;k=n;k+)cij+=aik*bkj,矩阵相乘的基本运算:
乘法加法;,数据结构中常用的时间复杂度频率计数有7个:
O
(1)常数型O(n)线性型O(n2)平方型O(n3)立方型O(2n)指数型O(log2n)对数型O(nlog2n)二维型,例计算解法1先计算x的幂,存于power中,再分别乘以相应的系数#defineN100floatevaluate(floatcoef,floatx,intn)floatpowerN,f;inti;for(power0=1,i=1;i=n;i+)poweri=x*poweri-1;for(f=0,i=0;i=N;i+)f=f+coefi*poweri;return(f);,问题规模为n,算法时间复杂度:
O(n)空间复杂度:
O(N),
(1)在计算机中,算法是指()。
A.查询方法B.加工方法C.解题方案的准确而完整的描述D.排序方法
(2)下列叙述中正确的是()。
A)算法的效率只与问题的规模有关,而与数据的存储结构无关B)算法的时间复杂度是指执行算法所需要的计算工作量C)数据的逻辑结构与存储结构是一一对应的D)算法的时间复杂度与空间复杂度一定相关(3)算法的有穷性是指()。
A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用,(c),(B),算法习题,(A),(4)算法的时间复杂度是指()A)算法的执行时间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的基本运算次数(5)算法的空间复杂度是指()A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(6)下列叙述中正确的是()A)一个算法的空间复杂度大,则其时间复杂度也必定大B)一个算法的空间复杂度大,则其时间复杂度必定小C)一个算法的时间复杂度大,则其空间复杂度必定小D)上述三种说法都不对,(D)计算工作量,(A),(D),数据结构,大量的数据元素在计算机中如何组织,以便提高数据处理的效率,并且节省计算机的存储空间,这是进行数据处理的关键问题。
数据结构是指相互有关联的数据元素的集合,既按某种逻辑关系把一批数据组织起来,按一定的映象方式把它存放在计算机的存储器中,并在这些数据上定义一个运算的集合。
归纳为三部分:
逻辑结构、存储结构和运算集合。
1.逻辑结构数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。
数据的逻辑结构包含:
(1)表示数据元素的信息;
(2)表示各数据元素之间的前后件关系。
例:
1.一年四季的数据结构B=(D,R)D=春,夏,秋,冬R=(春,夏),(夏,秋),(秋,冬)2.家庭成员的数据结构B=(D,R)D=父亲,儿子,女儿R=(父亲,儿子),(父亲,女儿),春,夏,秋,冬,数据结构的图形表示,父亲,儿子,女儿,常见的逻辑结构有:
线性结构、树形结构和图形结构。
线性结构结构中的每个元素之间存在一个对一个的关系;线性表、栈、队、字符串、数组树形结构(非线性)结构中的每个元素之间存在一个对多个的关系;图形结构或网状结构(非线性)结构中的每个元素之间存在多个对多个的关系。
2.存储结构(物理结构)计算机在实际进行数据处理时,被处理的各数据元素总是被存放在计算机的存储空间中,并且,各数据元素在计算机存储空间中的位置与它们的逻辑关系不一定是相同的,而且一般也不可能相同。
如:
一年四季家庭成员计算机存储空间怎样存放?
存储结构指数据结构在计算机存储空间中的具体实现。
常见的存储结构有:
顺序存储结构链式存储结构索引存储结构,3.数据的运算检索插入删除更新排序,通常,一个数据结构中的元素结点可能是动态变化的。
根据需要或在处理过程中,可以在一个数据结构中增加一个新结点(插入运算),也可以删除某个结点(删除运算),除此之外,对数据结构的运算还有查找、分类、合并、分解、复制和修改。
数据结构是研究数据和数据之间关系的一门学科,研究以下三方面内容:
数据的逻辑结构数据的存储结构数据的运算,常见的数据结构,1.线性表2.栈和队列3.树,线性表(LinearList),线性表是由n(n0)个数据元素a1,a2,ai,an组成的一个有限序列。
线性表是最简单、最常用的数据结构。
栈、队列、串是特殊的线性表数组和广义表是线性表的扩展-线性结构,例、英文字母表(A,B,C,D,EZ)。
某单位的电话号码簿。
线性表的概念,设A=(a1,a2,.,ai-1,ai,ai+1,an)是一线性表,1)同一线性表中的元素必须是同一类型的;2)在表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的前件,ai+1是ai的后件;3)在线性表中,除第一个元素和最后一个元素之外,其他元素都有且仅有一个前件,有且仅有一个后件;4)线性表中元素的个数n称为线性表的长度,n=0时称为空表;,用一组连续的内存单元依次存放线性表的数据元素。
线性表(a1,a2,a3,.an)的顺序存储结构,用顺序存储结构存储的线性表称为顺序表,线性表的顺序存储和实现,一、线性表的顺序存储结构,线性表的顺序存储和实现,说明:
元素之间的逻辑关系,通过元素的存储顺序表示出来.设线性表中每个数据元素占t个存储单元,那么,在顺序存储结构中,线性表的第i个元素的存储位置与第1个元素的存储位置的关系是:
Loc(ai)=Loc(a1)+(i1)t其中Loc(a1)基地址,随机存取,线性表的顺序存储和实现,插入位置移动元素个数1n2n-1in-i+1n1n+10,插入算法时间复杂度分析算法时间复杂度取决于移动元素的个数,移动元素的个数不仅与表长有关,而且与插入位置有关。
由此可见在顺序表中插入一个元素,平均要移动表的一半元素。
表长为n的顺序表,插入算法的时间复杂度为O(n),假设在线性表的任何位置插入元素的概率相同,即pi=1/(n+1),设pi为在第i个元素之前插入元素的概率,在长度为n的顺序表中插入一个元素,所需移动元素个数数学期望值为:
删除算法时间复杂度分析,假设在线性表的任何位置删除元素的概率相同,即pi=1/n删除所需移动元素个数的数学期望值:
线性表的顺序存储和实现,顺序表是线性表最简单的一种存储结构,线性表的链式存储和实现,线性表的链式存储结构是用一组任意的存储单元存储线性表的各个数据元素。
为了表示线性表中元素的先后关系,每个元素除需要存储自身的信息外,还要保存直接前趋元素或直接后继元素的存储位置。
一线性链表的概念1线性链表,用一组任意的存储单元存储线性表中的数据元素,对每个数据元素保存自身信息和直接后继元素的存储位置。
用链表存储线性表时,数据元素之间的关系是通过保存直接后继元素的存储位置来表示的,结点:
数据元素及直接后继的存储位置(地址)组成一个数据元素的存储结构,称为一个结点;结点的数据域:
保存数据元素;结点的指针域:
保存数据元素直接后继的存储地址;,线性链表有关术语,存储数据元素,存储后继结点存储地址,头指针:
存放线性链表中第一个结点的存储地址;空指针:
不指向任何结点,线性链表最后一个结点的指针通常是空指针;头结点:
链表的第一个元素结点前的附加结点;带头结点的线性链表:
第一个元素结点前增加一个附加结点的线性链表称为带头结点的线性链表;,head是头指针,头结点,空指针,head,线性链表的每个结点中只有一个指针域故也称为单链表,插入结点(存a),q=(LNODE*)malloc(sizeof(LNODE);q-deta=a;q-next=p-next;p-next=q;,head,y,x,p,head,q,插入操作功能:
在线性链表的第i个元素结点之前插入一个新元素结点e;插入操作图示:
插入前,插入后,head,head,4)删除结点,q=p-next;p-next=q-next;free(q);,head,y,x,q,head,p,p,删除前,删除后,p,p,q,q,线性链表小结,线性链表是线性表的一种链式存储结构,线性链表的特点1通过保存直接后继元素的存储位置来表示数据元素之间的逻辑关系;2插入、删除操作通过修改结点的指针实现;3不能随机存取元素;,1循环链表的概念循环链表的特点是将线性链表的最后一个结点的指针指向链表的第一个结点(首尾相连的单链表)2循环链表图示,循环链表,(a)非空表(b)空表,循环链表,说明在解决某些实际问题时循环链表可能要比线性链表方便些。
如将一个链表链在另一个链表的后面;对循环链表,有时不给出头指针,而是给出尾指针,a,a1,an,a-next给出尾指针的循环链表,双向链表循环单链表,虽然从任一结点出发沿着指针链能找到其前件,但时间耗费是O(n)。
如果希望从表中快速确定某一个结点的前件,另一个解决方法是在链表的每个结点里再增加一个指向其前件的指针域prior。
这样形成的链表中就有两条方向不同的链,称为双向链表。
线性表小结,线性表的顺序存储结构顺序表,链式存储结构-线性链表,循环链表,双向链表.不同的存储结构,线性表的同一操作的算法是不同的:
在顺序存储结构下,线性表的插入、删除操作,通过移动元素实现;在线性链表存储结构下,线性表的插入、删除操作,通过修改指针实现。
1.线性表的顺序存储结构和线性表的链式存储结构分别是_。
A顺序存取的存储结构、顺序存取的存储结构B随机存取的存储结构、顺序存取的存储结构C随机存取的存储结构、随机存取的存储结构D任意存取的存储结构、任意存取的存储结构2.线性表若采用链式存储结构时,要求内存中可用存储单元的地址_。
A必须是连续的B部分地址必须是连续的C一定是不连续的D连续不连续都可以3.线性表L=(1,2,3,i,n),下列说法正确的是()。
A每个元素都有一个直接前件和直接后件B线性表中至少要有一个元素C表中诸元素的排列顺序必须是由小到大或由大到小D除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件,B,D,D,2栈,栈是限定仅能在表尾一端进行插入、删除操作的线性表,(a1,a2,.,ai-1,ai,ai+1,an),插入,删除,2.1栈的概念一什么是栈?
将表中允许进行插入、删除操作的一端称为栈顶(Top),栈顶的当前位置是动态变化的,由一个栈顶指针指示其位置。
表的另一端称为栈底(Bottom)。
当栈中没有元素时称为空栈。
栈的插入操作称为进栈或入栈,删除操作称为出栈或退栈。
栈,栈的示意图,出栈,进栈,栈的特点后进先出,