408之数据结构与算法——1.绪论
人生不应该被束缚于规定的轨迹,如同沉重的锁链,而是应该如一条流淌的江河,自由而灵动。生活并非一幅精确的图画,而是一幅抽象的油画,每一笔都是我们自己挥洒的。或许我们永远找不到生命的终极答案,但这正是人生的神秘之处,我们要毫不保留地去拥抱这个未知的旅程,如同欣赏一幅抽象画,不求解答,只求沉浸其中,感受其中的美妙。
1. 数据结构
-
数据:
数据是信息的载体,是描述客观事物属性的数、字符以及所有能输入到计算机中并被计算机程序识别和处理的符号集合。 -
数据元素:
数据元素是数据的基本单位,通常作为一个整体进行处理。 -
数据项:
一个数据元素可以由若干个数据项组成,数据项是构成数据元素不可分割的最小单位。 -
数据结构:
数据结构是相互之间存在的一种或多种特定关系的数据元素的集合。
数据结构的三要素:逻辑结构,物理结构(存储结构),数据的运算。 -
数据对象:
数据对象是具有相同性质的数据元素的集合,是数据的一个子集。 -
数据类型:
原子类型:其值不可再分的数据类型,如(int,bool 等)。
结构类型:其值可以在分解为若干成分的数据类型,如(struct定义的,class定义的)。 -
抽象数据类型:
抽象数据组织及与之相关的操作。【定义了逻辑结构、数据的运算,只有在实现的时候才确定物理结构(存储结构)】
2. 数据结构三要素
2.1 逻辑结构
-
集合
各个元素同属于一个集合,数据之间再无其他关系。 -
线性结构
数据元素之间是一对一关系。
除了第一个元素,所有元素都有唯一前驱;除了最后一个元素,所有元素都有唯一后继。 -
树形结构
数据元素之间是一对多关系。 -
图状结构(网状)
数据元素之间是多对多关系。
2.2 物理结构(存储结构)
数据的存储结构:①.影响存储空间分配的方便程度 ②.影响对数据运算的速度。
后三个为非顺序存储。
- 顺序存储
逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的逻辑关系由存储单元的邻接关系来体现。 - 链式存储
逻辑上相邻的元素存储在物理位置上可以不相邻,元素之间的逻辑关系由指针体现。 - 索引存储
在存储元素的同时,还建立附加的索引表。索引表中的每项称为索引项,索引项(关键字,地址)。 - 散列存储
通过元素的关键字直接计算出该元素的存储地址,又被称为哈希存储(Hash)。
2.3 数据的运算
数据的运算:施加在数据上的运算包括运算的定义和运算的实现。
运算的定义: 针对逻辑结构,指出运算的功能。
运算的实现: 针对存储结构,指出运算的具体操作步骤。
3. 算法
3.0 概念
程序 = 数据结构 + 算法
算法:是对特定问题求解步骤的一种描述。
3.1 算法的特性
算法的特性 | 注意点 |
---|---|
有穷性 | 算法必须有穷,程序可以无穷 |
确定性 | 相同输入只能得出相同输出 |
可行性 | 算法中的操作,可以通过已经实现的基本运算的有限次来实现 |
输入 | 一个算法有零个或多个输入 |
输出 | 一个算法有一个或者多个输出 |
‘好’ 算法的特性 | 注意点 |
---|---|
正确性 | |
可读性 | |
健壮性 | |
高效率 | 时间复杂度低(运行的快) |
低存储量需求 | 空间复杂度低(不费内存) |