数据结构与算法笔记 —— 向量
一. 数据结构
- 抽象数据类型 = 数据模型 + 定义在该模型上的一组操作。特点:
- 抽象定义
- 外部的逻辑特性
- 操作 & 语义
- 不考虑时间复杂度
- 不涉及数据的存储方式
- 数据结构是基于某种语言的数据抽象类型 (Abstructal Data Type, ADT) 的实现,特点:
- 具体实现
- 内部的表示与实现
- 完整的算法
- 多种实现
- 与复杂度密切相关
- 要考虑具体的存储机制
- 向量接口如下图:
二. 可扩充向量
- 采用静态空间管理的缺点:
- 上溢:分配的内存空间过小,而需要存储的内容过大
- 下溢:分配的内存空间过大,降低了空间存储效率,浪费资源
- 动态空间管理策略:在即将发生溢出时,适当地扩大内部数组的容量
- 递增式增长:属于O(n2),算法效率太低,但空间利用率高
- 倍增式增长:属于O(n),算法效率高,但空间利用率 > 50% ,牺牲空间换取时间
- 平均分析是根据数据结构各种操作出现概率的分布,将对应的成本加权平均
- 各种可能的操作作为独立事件分别考虑
- 割裂了操作之间的相关性与连续性
- 往往不能准确地评判数据结构和算法的真实性能
- 分摊平均是对数据结构连续地实施足够多次操作,所需总体成本分摊至单次操作
- 从实际可行的角度,对一系列操作做整体的考量
- 更加忠实地刻画了可能出现的操作
- 可以更为准确地评判数据结构与算法的真实性能
参考文献
[1] 邓俊辉《数据结构》