- 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.1.2 有关概念和术语 数据(data)—所有能输入到计算机中去的描述客观事物的符号。 数据元素(data element)—数据的基本单位,也称节点(node)或记录(record)。 数据对象(data Object)—具有共同特性的元素集合,是数据的一个子集。 数据结构(data structure)—数据元素和数据元素关系的集合。 一个数据结构有两个要素: 数据元素的集合; 关系的集合。 数据的逻辑结构 数据的逻辑结构—指数据结构中元素之间的逻辑关系。它是从具体问题中抽象出来的数学模型。是独立于计算机存储器(与具体的计算机无关)。可分为如下几种基本类型: 集合结构: 线性结构: 树型结构: 图形结构: 数据的存储结构 数据的存储结构—数据的逻辑结构在计算机存储器中的存储方式,又称物理结构。可分为如下两种类型。 顺序存储结构: 链式存储结构: 1.2 算法的概念及其特征 算法(algorithm):是在解决问题时,按照某种机械的步骤一定可以得到问题的结果的处理过程;是计算机解决问题的过程,是解决某一特定问题的具体步骤的描述,是指令的有限序列。 1.2.2 算法的三要素 操作: 算术运算:加、减、乘、除。 关系比较:大于、小于、等于、不等于 逻辑运算:与、或、非 数据传送:输入、输出(计算)、赋值(计算)。 控制结构: 顺序结构:选择结构:循环结构: 数据结构: 1.2.3 算法的基本性质 目的性 分步性 有序性 有限性 操作性 1.2.4 算法的基本特征 有穷性 确定性 可行性 算法有零个或多个的输入 算法有一个或多个的输出 1.2.5 算法设计的要求 正确性 可读性 稳健性 高效率与低存储量的要求 1.3 算法分析和评价 对算法的分析和评价,一般应考虑正确性、可维护性、可读性、运算量、占用存储空间等诸多因素。其中评价算法的3条主要标准是: (1)算法实现所耗费的时间(时间复杂度)。 (2)算法实现所耗费的存储空间,其中主要考虑辅助存储空间(空间复杂度)。 (3)算法应易于理解、易于编码、易于调试等。 1.3.1 算法的时间复杂度 1。 和算法执行时间相关的因素 问题中数据存储的数据结构; 算法采用的数据模型; 算法设计的策略; 问题的规模; 实现算法的程序语言; 编译算法产生的机器代码的质量; 计算机执行指令的速度。 算法时间效率的衡量方法 算法效率:用依据该算法编制的程序在计算机上执行所消耗的时间来度量,评价的方法有: 事后分析法 事前分析估算法 事后分析法 将算法用程序设计语言实现,然后度量程序的运行时间。 缺点:?必须先运行依据算法编制的程序; ?不同的算法在相同环境下运行分析,工作效率太低; ③所得时间统计量依赖于硬件、软件等环境因素,掩盖算法本身的优劣。 事前分析估算法 同一个算法用不同的语言、不同的编译程序、在不同的计算机上运行,效率均不同,———所以使用绝对时间单位衡量算法效率不合适。 渐进时间复杂度:随着问题规模n的增长,算法执行时间增长率和函数f(n)的增长率相同,可记作:T(n)=o(f(n)),称T(n)为算法的渐进时间复杂度,简称时间复杂度,o是数量级的符号。 时间复杂度估算 从算法中选取一种对于所研究的问题来说是基本运算的原操作,以该原操作重复执行的次数作为算法的时间度量。 一般情况下,算法中原操作重复执行的次数是规模n的某个函数T(n)。 时间复杂度定义 如果存在两个正常数c和n0,使得对所有的n,n≥ n0 ,有: f(n) ≤cg(n) 则有: f(n)=O(g(n)) 1.每个赋值语句或读/写语句的运行时间通常是O(1)。但有一些例外情况,如赋值语句的右部表达式可能出现函数调用,这时就要考虑计算函数值所耗费的时间。 2.顺序语句的运行时间由线性规则决定,即为该序列中耗费时间最多的语句的运行时间。 3.语句if的运行时间为条件语句测试时间(通常取0(1))加上分支语句的运行时间,语句if-else-if的运行时间为条件测试时间加上分支语句的运行时间。 4.循环语句的运行时间是n次重复执行循环体所耗费时间的总和。 5. 常见的渐进时间复
原创力文档


文档评论(0)