免责声明:
- 笔记来源:本系列所有笔记均整理自 B站·王道考研·数据结构 视频教程。
- 参考书籍:《2021年数据结构考研复习指导》,王道论坛所著,电子工业出版社出版,ISBN :9787121379819。
数据结构,是相互间存在特点关系的数据元素的集合。
1 数据结构三要素
逻辑结构
逻辑结构:独立于计算机,与存储无关,从逻辑上描述数据之间的关系。分为两种:
- 线性结构
- 非线性结构
逻辑结构决定了一个算法的设计。
存储结构
存储结构(物理结构),是数据结构在计算机中的表示(数据元素以及关系的表示),主要分为:
- 顺序存储:逻辑上相邻、物理上也相邻;可随机存取,缺点是可能产生较多存储碎片
- 链式存储:使用指向相关元素的地址指针来表示元素间的逻辑关系,物理上不需要连续;缺点是只能顺序存取,优点是不会产生存储碎片
- 索引存储:存储数据信息的同时,建立附加的索引表。优点是检索速度快,缺点是需要消耗额外的空间与时间维护索引表
- 散列存储:又称“哈希存储”,根据元素的关键字计算数元素的存储地址,优点是数据插入、删除、查找都很快,但是如果散列函数不够好,会出现存储单元冲突,解决冲突需要消耗额外的空间、时间
存储结构决定了一个算法的实现。
数据运算
-
运算的定义:针对逻辑结构,指出运算能够实现的功能
-
运算的实现:针对存储结构,指出运算的具体操作步骤
2 算法与算法评价指标
算法的概念
算法(Algorithm),是对特定问题求解步骤的描述。由有限的指令序列组成,指令表示一个或多个操作。
算法的特点
- 有穷性:应该在执行有穷个步骤后结束,每个步骤的执行时间也应该是有穷的。
- 确定性:每一条指令必须有确切的语义,相同的输入,应该输出相同的结果。
- 可行性:算法中的描述,都应该可以通过已经实现的基本运算执行有限次来实现。
- 输入:一个算法可以有输入,也可以没有输入
- 输出:一个算法至少有一个输出
什么才是好的算法
- 应该能够正确的求解问题——正确性
- 应该易于理解——可读性
- 输入非法数据时,应该能够做成恰当的处理——健壮性
- 算法的执行时间应该尽可能的少——效率
- 算法执行的整个过程中所需的最大存储空间应该尽可能的低——低存储需求
时间复杂度
算法的时间复杂度就是分析算法的时间开销与问题规模n之间的关系。
时间复杂度求解案例
问题1:是否可用忽略表达式的某些部分
问题2:如果有成千上万行代码,还能按这种方式一行行的数?
知识点总结
空间复杂度
空间复杂度分析的是一个算法内存开销与问题规模n之间的关系。
空间复杂度求解
函数递归调用时的空间复杂度分析
知识点总结