- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1-第一章
课程内容: 计算机软件的基础知识———数据结构 课时安排: 课堂——16*4=64学时 上机——单开数据结构实验课 1.1 什么是数据结构 程序=数据+算法 例1 书目自动检索系统 例2 人机对奕问题 多叉路口交通灯管理问题 数据结构定义: 是一门研究程序设计问题中计算机的操作对象以及它们之间的关系和操作等等的学科 1.2 基本概念和术语 数据(data)—所有能输入到计算机中去的描述客观事物的符号 数据元素(data element)—数据的基本单位,也称节点(node)或记录(record) 数据项(data item)—有独立含义的数据最小单位,也称域(field) 数据结构(data structure)—数据元素和数据元素关系的集合 数据的逻辑结构—只抽象反映数据元素的逻辑关系 数据的存储(物理)结构—数据的逻辑结构在计算机存储器中的实现 1.3 数据类型和抽象数据类型 数据类型:是一个值的集合和定义在这个值集上一组操作总称。 分类:(按值的不同特性) 原子类型 :每一个对象仅由单值构成的类型 ; 结构类型 :每一个对象可由若干成分按某种结构 构成的类型。 抽象数据类型 ADT(Abstract Data Type) 作用:抽象数据类型可以使我们更容易描述实际问题。 例:用线性表描述学生成绩表,用树或图描述遗传关系。 定义:一个数学模型以及定义在该模型上的一组操作。 好处:可提高软件的复用程度。使用它的人可以只关心它的逻辑特征,不需要了解它的存储方式。定义它的人同样不必要关心它如何存储。 抽象数据类型 抽象数据类型表示法 表示方法: 三元组表示:(D,S,P) 其中:D是数据对象,S是D上的关系集,P是对D的基本操作集。 标准定义格式: ADT 抽象数据类型名{ 数据对象:数据对象的定义 数据关系:数据关系的定义 基本操作:基本操作的定义 }ADT 抽象数据类型名 例:线性表的表示 算法的概念 建立在数据结构基础上的、求解问题的一系列确切的步骤。 算法的五个特性 有穷性:对任何合法输入执行有穷步后能结束。 确定性:每条指令必须有确切的含义。 可行性:算法的每一条指令均能执行。 输入:有零个或多个输入。 输出:有一个或多个输出。 算法和程序的关系 两者相似而又有区别。程序不一定满足有穷性(死循环);程序中的指令必须是机器可执行的,而算法中的指令则无此限制。一个算法若用计算机语言来书写,则它就可以是一个程序。 1.4 算法和算法分析 正确性(Correctness) 算法应满足具体问题的需求 对于典型的、苛刻而带有刁难性的一组有效输入得到正确的结果 可读性(Readability) 算法应该好读。以有利于阅读者对程序的理解。 健壮性(Robustness) 算法应具有容错处理。当输入非法数据时,算法应对其作出反应,而不是产生莫名其妙或随机的输出结果。 高效性(Efficiency) 效率指的是算法执行时间。对于解决同一问题的多个算法,执行时间短的算法效率高。 存储量需求指算法执行过程中所需要的最大存储空间。 时间复杂度和空间复杂度都与问题的规模有关。 评价算法优劣的基本标准 算法效率的度量 事后统计的方法:求出该算法的一个时间界限函数; 事前分析估算的方法;要考虑以下的因素: 问题的规模; 编写程序时所用的程序设计语言; 机器的速度; 算法所用的策略。 渐近时间复杂度(时间复杂度):一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,算法的时间量度记作 T(n)=O(f(n))称作算法的渐近时间复杂度,简称时间复杂度。 频度:是指该语句重复执行的次数。频度与问题的基本操作执行次数相同,故时间复杂度可通过频度来计算。 估算时间复杂度的方法 :从算法中选取一种对于所研究的问题来说是基本操作的原操作,以该基本操作在算法中重复执行的次数作为算法运行时间的衡量准则 。 时间复杂度 n 问题规模,一般为数据的输入量 f(n) 算法中基本操作重复执行的次数—频度 是问题规模n的某个函数 算法的时间量度、时间复杂度 算法中各语句的频度之和T(n) T(n)=O( f(n) ) 随问题规模的增大,算法执行时间的增长率和f(n)的增长率相同 O的含义 存在正的常数c和n0,使得当n ? n0时, 0? T(n) ? c* f(n) 渐近复杂度的数学定义 定义:如果存在两个正常数c和n0,对于所有的n≧n0,有︱f(n) ︳≦c|g(n) ︳,则称函数f(n)当n充分大时有上界,且g(n)是它的一个上界,记为 f(n)=O(g(n)) 此时,可以说f(n)的阶不高
文档评论(0)