数据结构期末复习(第一章 绪论)
文章目录
开始啦,大复习(预习)
Part 1、知识点总结
1.1什么是数据
- 数据:数据是信息的载体,是描述客观事物的数、字符以及所有能输入到计算机中,被计算机程序识别和处理的符号集合。
- 数据结构主要分为两大类:数值型数据和非数值型数据。数据结构主要研究的是非数值型数据。
1.2什么是数据元素
- 数据的基本单位就是数据元素。
- 有时一个数据元素可以由若干个数据项组成。数据项是具有独立含义的最小标识单位。
- 数据元素的集合构成一个数据对象,它是针对某种特定的应用。
- 数据对象(Data Object):是性质相同的数据元素的集合,是数据的一个子集。
1.3什么是数据结构
- 数据结构是指某一数据元素集合中的所有数据成员之间的关系。
- 元素之间的相互联系(关系)称为逻辑结构。
- 完整的定义为: 数据结构 = {D、R}
- 其中,D是某一数据元素的集合;R是该集合中所有数据成员之间关系的有效集合。
-① 集合:结构中的数据元素除了“同属于一个集合”外,没有其它关系。
-② 线性结构:结构中的数据元素之间存在一对一的关系。
-③ 树型结构:结构中的数据元素之间存在一对多的关系。
-④ 图状结构或网状结构:结构中的数据元素之间存在多对多的关系。 - 数据结构在计算机内存中的存储包括数据元素的存储和元素之间的关系的表示。
- 元素之间的关系在计算机中有两种不同的表示方法:顺序表示和非顺序表示。由此得出两种不同的存储结构:顺序存储结构和链式存储结构。
- 顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑结构(关系)。
- 链式存储结构:在每一个数据元素中增加一个存放另一个元素地址的指针,用该指针来表示数据元素之间的逻辑结构(关系)。
- 顺序结构:数据元素存放的地址是连续的;
- 链式结构:数据元素存放的地址是否连续没有要求。
- 数据的逻辑结构和物理结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。
- 在C语言中,用一维数组表示顺序存储结构;用结构体类型表示链式存储结构。
- 存储结构: 数据元素在计算机中的存储及其逻辑关系的表现称为数据的存储结构或物理结构。
- 数据操作: 对数据要进行的运算。
2 抽象数据类型
- 抽象数据类型(Abstract Data Type ,简称ADT):是指一个数学模型以及定义在该模型上的一组操作。
- ADT的定义仅是一组逻辑特性描述, 与其在计算机内的表示和实现无关。因此,不论ADT的内部结构如何变化,只要其数学特性不变,都不影响其外部使用。
- ADT的形式化定义是三元组:ADT=(D,S,P)
其中:D是数据对象,S是D上的关系集,P是对D的基本操作集。
3.1 算法
- 算法(Algorithm):是对特定问题求解方法(步骤)的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。
- 算法的五个特性:
① 有穷性: 一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
② 确定性:算法中每一条指令必须有确切的含义。不存在二义性。且算法只有一个入口和一个出口。
③ 可行性: 一个算法是能行的。即算法描述的操作都可以通过已经实现的基本运算执行有限次来实现。
④ 输入: 一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。
⑤ 输出: 一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。 - 算法和程序是两个不同的概念。一个计算机程序是对一个算法使用某种程序设计语言的具体实现。算法必须可终止意味着不是所有的计算机程序都是算法。
3.2 算法设计的要求
- 评价一个好的算法有以下几个标准
① 正确性(Correctness ): 算法应满足具体问题的需求。
② 可读性(Readability): 算法应容易供人阅读和交流。可读性好的算法有助于对算法的理解和修改。
③ 健壮性(Robustness): 算法应具有容错处理。当输入非法或错误数据时,算法应能适当地作出反应或进行处理,而不会产生莫名其妙的输出结果。
④ 通用性(Generality): 算法应具有一般性 ,即算法的处理结果对于一般的数据集合都成立。
⑤ 效率与存储量需求: 效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。一般地,这两者与问题的规模有关。
4 时间复杂度和空间复杂度
时间复杂度
- 算法的时间复杂度度量是通过统计算法的每一条指令的执行次数和执行时间得到的,因此,算法的时间复杂度计算公式为:
算法的执行时间 = 算法中每条语句的执行时间之和
每条语句的执行时间 = 该语句的执行次数(或频度)X 该语句执行一次所需时间 - 只要求掌握“大O表示”,即O(n);
- 求共计的时间复杂度就是每条语句的执行次数加一起,但是貌似不要求掌握
空间复杂度
-
空间复杂度(Space complexity) :是指算法编写成程序后,在计算机中运行时所需存储空间大小的度量。记作: S(n)=O(f(n))
其中: n为问题的规模(或大小) -
该存储空间一般包括三个方面:
指令常数变量所占用的存储空间;
输入数据所占用的存储空间;
辅助(存储)空间。 -
一般地,算法的空间复杂度指的是辅助空间。
一维数组a[n]: 空间复杂度 O(n)
二维数组a[n][m]: 空间复杂度 O(n*m)
PPT课后题
1 简要回答术语:数据,数据元素,数据结构,数据类型。
2 数据的逻辑结构?数据的物理结构?逻辑结构与物理结构的区别和联系是什么?
3 数据结构的主要运算包括哪些?
4 算法分析的目的是什么?算法分析的主要方面是什么?
5 分析以下程序段的时间复杂度,请说明分析的理由或原因。
(感觉都是死知识)
自己康的一点题
- 顺序存储表示中数据元素之间的逻辑关系是由存储位置表示的,链式存储表示中数据元素之间的逻辑关系是由指针表示的。
- 计算机所处理的数据一般具有某种关系,是指数据元素与数据元素之间存在的某种关系
- 数据结构相同,对应的存储结构不一定相同,可用顺序表、链表、散列表、索引表等等实现。
- 定义逻辑结构时可以不考虑存储结构
- 数据结构的逻辑结构独立于其存储结构
- 抽象数据结构(ADT)的三个特点是数据封装、信息隐藏、使用与实现分离。
- 时间复杂度与问题规模有关。计算机硬件的运行速度、源程序的长度、编译后执行程序的质量影响的都是具体执行时间。
- 时间复杂度O(n)表示该算法执行时间与n成正比。
- 从逻辑上可以把数据结构分为线性结构、非线性结构两大类
- 数据结构是带有结构的数据元素的集合
- 数据结构这门学科是针对什么问题而产生的?针对非数值计算的程序设计问题
- 数据结构这门学科的研究内容下面选项最准确的是 研究数据对象、数据之间的关系和操作
- 数据结构是指数据元素的组织形式
Part 2、代码
第一单元并没有什么代码
Part 3、总结
感觉第一单元重要的是概念的理解与区分,一些小题经常出一些概念混淆的点,然后就是时间复杂度和空间复杂度要掌握,可以帮你优化代码与程序。