C和数据结构北京大学_第1页
C和数据结构北京大学_第2页
C和数据结构北京大学_第3页
C和数据结构北京大学_第4页
C和数据结构北京大学_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构(一)常宝宝北京大学计算机科学与技术系基本概念数据n可以被计算机识别、存储和加工处理的符号的集合。n是计算机操作的对象的总称。n是信息的载体。例子n数值计算程序(实数或整数)n编译程序(源程序)n图像处理程序(图像)基本概念数据元素n组成数据的基本单位。n是数据中的一个“个体”。n又称元素、记录、结点或者顶点。数据项n数据元素由数据项组成。n是数据结构中讨论的最小单位。n又称域、字段。姓姓名名 俱俱乐乐部部名名称称 出出生生日日期期 参参加加日日期期 职职务务 王二 工人俱乐部 1970-10-3 2000-9-10 会员 基本概念数据结构n相互之间存在着某种关系的数据元素的集合。逻辑

2、结构n数据元素之间的逻辑关系。存储结构n逻辑结构在存储器中的映象。基本概念数据的逻辑结构,可形式表示为二元组: L = ( N, R )其中 N 是结点的有限集合R 是 N 上的关系集合例子L = ( N, R )N = a0, a1, a2 R = r r = ( a0, a1 ), ( a0, a2 ) 基本概念设L=( N, R )是一个逻辑结构,R= r ,若a, bN,且关系( a, b )r, 则:称 a 是 b 的 前趋结点,称 b 是 a 的 后继结点,称 a 和 b 是 相邻结点, 如果不存在aN,使( a, b )r ,则称b为始结点,如果不存在bN,使( a, b )r,

3、则称a为终结点,既非始结点又非终结点的结点被称为内结点。基本概念数据的逻辑结构n线性结构n树形结构n图状结构n集合结构基本概念线性结构 结构中有且仅有一个始结点和一个终结点,每个内结点有且仅有一个前趋结点和一个后继结点。非线性结构 结构中的结点可能有多个前趋结点和多个后继结点。基本概念一行表示一个结点(元素),每个结点由学号、姓名、性别等九个域(数据项)组成。表的第一行是始结点;最后一行是终结点;中间的行都是内结点。表的逻辑结构是线性结构。基本概念数据的存储结构n“数据元素”的映象n“关系”的映象数据元素的映象方法用二进制位(bit)的位串表示数据元素 (321)10 = (101000001

4、)2 A = (001000001)2基本概念关系的映象方法n顺序映象 以相对的存储位置表示后继关系n链式映象 以附加信息(指针)表示后继关系 x yn存储结构只含数据元素本身 的信息,无附加信息 y xn链式映象中,存储结构除数据元素本身信息外,需要附加信息指示存储位置基本概念算法 是能够解决某类问题的由若干指令组成的有限序列。一个算法可以用自然语言、程序设计语言或专门设计的伪语言描述。算法必须满足五个特性:(1)有限性(2)确定性(3)输入(4)输出(5)可行性基本概念1.有限性:任何一条指令都只能执行有限次,换句话说,算法必须在执行有限步后结束。2.确定性:算法中每条指令的含义必须明确,

5、不允许有二义性,对于相同的输入只能得出相同的输出。3.输入:一个算法可以有零个或多个输入数据,这些输入数据取自确定的对象集合。4.输出:算法有一个或多个输出,这些输出是同输入有某个特定关系的量。5.可行性:算法中的所有操作都必须足够基本,都可以通过已经实现的基本操作运算有限次实现之。基本概念算法的设计原则: n正确性n可读性n坚固性(健壮性)n高效率与低存储量需求基本概念正确性:说一个算法是正确的,是指对于一切合法的输入数据,该算法经过有限时间(算法意义上的有限)的执行都能产生正确(或者说满足规格说明要求)的结果。 可读性: 可读性好的算法有助于设计者和他人阅读、理解、修改和重用。晦涩难读的程

6、序易于隐藏较多错误。坚固性: 当输入数据非法时,算法能适当地作出合适的反应。高效率与低存储量需求:通常,效率指的是算法执行时间;存储量指的是算法执行过程中所需的最大存储空间,两者都与问题的规模有关。基本概念目前不存在证明算法正确性的形式化方法算法正确性的四个层次n程序中不含语法错误;n程序对于几组输入数据能够得出满足要求的结果;n程序对于精心选择的、典型、苛刻且带有刁难性的几组输入数据能够得出满足要求的结果;n程序对于一切合法的输入数据都能得出满足要求的结果;基本概念算法效率的衡量方法和准则两种方法事后统计法必须执行程序其它因素掩盖算法本质事前分析估算法基本概念和算法执行时间相关的因素:n算法

7、选用的策略n问题的规模n编写程序的语言n编译程序产生的机器代码的质量n计算机执行指令的速度用绝对的时间单位衡量算法效率不合适基本概念撇开影响算法效率的软硬件因素,一个特定算法的“运行工作量”的大小,只依赖于问题的规模(通常用整数量n表示),或者说,它是问题规模的函数。假如,随着问题规模 n 的增长,算法执行时间的增长率和 f (n) 的增长率相同,则可记作: T (n) = O( f (n) )称T (n) 为算法的(渐近)时间复杂度。基本概念算法 = 控制结构 + 基本运算为了比较同一问题的不同算法,通常的做法是,从算法中选取一些基本运算,以基本运算的重复执行次数作为算法的时间量度。void

8、 mult(int an, int bn, int(&c)nn ) / 以二维数组存储矩阵元素,c 为 a 和 b 的乘积 for (i=0; in; +i) for (j=0; jn; +j) cij = 0; for (k=0; kn; +k) cij += aik*bkj; /for /multO(n3)基本概念例子:(a) x=x+1;O(1)(b) for(i=0; in; i+) x=x+1;O(n)(c) for(i=0; in; i+) O(n2) for( j=0; jn; j+) x=x+1;算法分类:n常量阶O(c)n对数阶O(log2n)n线性阶O(n)n多项式

9、阶 O(nm)n指数阶O(2n) 基本概念类似于算法的时间复杂度,空间复杂度度量算法所需存储空间,记做:S = O( f (n) )算法所需存储空间包括:n输入数据所占空间n程序本身所占空间n辅助变量所占空间基本概念若输入数据所占空间只取决于问题本身,和算法无关,则只需要分析除输入和程序之外的辅助变量所占额外空间。若所需额外空间相对于输入数据量来说是常数,则称此算法为原地工作。若所需存储量依赖于特定的输入,则通常按最坏情况考虑。基本概念数据类型 在用高级程序语言编写的程序中,必须对程序中出现的每个变量、常量或表达式,明确说明它们所属的数据类型。不同类型的变量,其所能取的值的范围不同,所能进行的操作不同。数据类型是一个值的集合和定义在此集合上的 一组操作的总称。基本概念抽象数据类型 是指一个数学模型以及定义在此数学模型上的一组操作。抽象数据类型的特征n数据抽象 用抽象数据类型描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能以及它和外部用户的接口。n数据封装 将实体的外部特性和其内部实现细节分离,并且对外部用户隐藏其内部实现细节。抽象数据类型和类基本概念抽象数据类型的描述ADT Name is Data 构成该抽象类型所必须的基本数据项 Operations 构造函数(声明一个该类型的对象时,对基本数据项进行初始化) Initial Values:赋给基本数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论