数据结构绪论
绪论
数据结构
逻辑结构
- 线性结构:线性表,栈,队列
- 非线性结构:树、图、集合
存储结构(物理结构)
顺序存储
链式存储
索引存储
一般存储形式是(关键字,地址)
散列存储
- 数据的运算
运算的定义是针对逻辑结构的、运算的实现是针对存储结构的
抽象数据结构定义了数据的取值范围和其结构形式,以及对数据操作的集合
五个特征
- 算法定义:算法是对特定问题求解步骤的一种描述,是指令的有限序列
- 有穷性、确定性、可行性、输入、输出
一个好的算法应该考虑达到下面的目标
- 正确性
- 可读性
- 健壮性
- 高效率与低存储量需求
一般总是考虑一个在最坏情况下的时间复杂度,来保证算法运行时间不会比它更长
易错题
可以用抽象数据类型来定义一个完整的数据结构
以下属于逻辑结构的是:有序表
在存储数据的过程中,通常不仅要存储各数据元素的值,而且要存储 数据元素之间的关系
要注意算时间复杂度的时候那个算法循环条件,不要把变量看错了
下面程序段的时间复杂度:
1 | int sum=0; |
这里我们假设
一共有q次循环,这样该题的时间复杂度为 $O(n)$
- 注意循环条件,这里循环条件是 i,所以时间复杂度为 $O(n)$
1 | i=1,k=0; |
拓展斐波那契数列
递归
1 | int f1(int n) |
时间复杂度为 $ O(2^n) $
非递归
1 | int f2(int n) |
时间复杂度 $ O(n) $
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 时光之歌!