- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构答案 第章 绪论学习指导
第1章 绪论
1.1 知识点分析
1.数据是信息的载体,是对客观事物的符号表示。数据是计算机化的现实世界的事物的抽象描述。凡是能被计算机识别、存取和加工处理的符号、字符、图形、图象、声音、视频信号等一切信息都可以称为数据。
2.数据元素数据元素是对现实世界中某独立个体的数据描述,是数据的基本单位。数据元素也称为结点,通常由若干数据元素组成。
3.数据项数据项是数据不可分割的、具有独立意义的最小数据单位,是对数据元素属性的描述。
数据、数据元素、数据项反映了数据组织的三个层次,即数据可以由若干个数据元素组成,数据元素又有若干数据项组成。
4.数据对象数据对象是性质相同的数据元素的集合,是数据的一个子集。
5.数据结构是相互之间存在的一种或多种特定关系的数据元素的集合。简言之,数据结构是指数据之间的关系,即数据的组织形式。数据结构包括以下三个方面:
(1)数据的逻辑结构
指数据元素之间的逻辑关系,即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。一个数据的逻辑结构G可以用二元组G=(D,R)来表示,其中D是数据元素的集合,R是D上所有数据元素之间关系的有限集合。
线性结构是指数据元素之间存在“一对一”关系的逻辑结构,非线性结构是指数据元素之间存在“一对多”或“多对多”关系的逻辑结构。
(2)数据的存储结构
数据元素及其关系在计算机存储器内的表示,称为数据的存储结构,也称为数据的物理结构。数据的存储结构是数据的逻辑结构用计算机语言的实现,它依赖于计算机语言。
(3)数据的运算
指对数据施加的操作。数据的运算是定义在数据的逻辑结构上的,而运算的实现则是在存储结构上进行的。
6.算法的描述和分析
数据的运算是通过算法来描述的,对于算法的说明可以使用不同的语言,对同一问题可以有不同的算法。首选选用的算法必须是正确的。其次,主要考虑执行算法所耗费的时间(即时间效率)和执行算法所耗费的存储空间(即空间效率)。
(1)时间复杂度
通常把算法中所包含简单操作次数的多少叫做算法的时间复杂度。但是当一个算法比较复杂时,其时间复杂度的计算会变得相当困难。一般情况下,算法中原操作重复执行的次数是规模n的某个函数f(n),算法的时间复杂度T(n)的数量级可记作:T(n)=O(f(n))。
算法的时间复杂度T(n)是该算法的时间消耗,一个算法的时间耗费就是该算法中所有语句的执行次数(频度)之和。当n→∞时(即当n相当大时),T(n)的数量级(阶),用大“O”记号表示。由于limT(n)/f(n)=C,C是不为0的常数,所以T(n)=O(f(n))。其实,f(n)就是T(n)中最高阶的那一项,是算法中频度最大的语句频度。
一般情况下,对于循环语句只需要考虑循环体中语句的执行次数,而忽略该语句中循环头的部分。有时,循环体中语句的频度不仅与问题规模n有关,还与输入实例等其它因素有关,此时可以用最坏情况下的时间复杂度作为算法的时间复杂度。
(2)空间复杂度
一个程序的空间复杂度是指程序运行从开始到结束所需要的存储空间。类似于算法的时间复杂度,我们把算法所需存储空间的量度,记作:S(n)=O(f(n))。其中n为问题的规模。一个程序上机执行时,除了需要存储空间来存放本身所用的指令、常数、变量和输入数据以外,还需要一些对数据进行操作的工作单元和实现算法所必需的辅助空间。在进行时间复杂度分析时,如果所占空间量依赖于特定的输入,一般都按最坏情况来分析。
程序运行时所需要的存储空间包括以下两个部分:
固定部分:主要包括程序代码、常量、变量、结构体变量等所占的空间。空间与所处理的数据大小和个数无关,或者说与问题事例的特征无关。
可变部分:空间大小与算法在某次执行中处理的特定数据的大小和规模有关。
1.2 典型习题分析
【例1】 算法与程序的区别
分析:算法与程序的既有区别(1)算法必须满足有穷性,而程序则不一定满足有穷性。例如,我们启动计算机必须使用操作系统,只要不关机或不遭受破坏,操作系统就永不终止。即使没有作业运行,它也一直处在一个等待循环之中。因此,操作系统是一个不终止的计算过程,但它不满足算法的定义。
(2)程序中的指令必须用计算机可以接受的语言书写,而算法则无此限制。但是,当用一个计算机可以接受的语言来书写算法时,它就是程序。一般而言,算法比较抽象,而程序则比较具体。
【例2】 通常一个算法的时间复杂度是指( )。
A.算法的平均时间复杂度 B.算法在最坏情况下的时间复杂度
C.算法的期望运行时间 D.算法在最好情况下的时间复杂度
分析:如果没有平均、最好、最坏的修饰语,时间复杂度就是指最坏的时间复杂度。最坏时间复杂度是算法的所有输入可能情况的执行时间的上界,所以应选B。
【例】 【例】 T(n)=
文档评论(0)