数据结构
数据结构研究什么?
- 一组有特定关系的数据的存储与处理
- 抽象的方法
数据的逻辑结构
- 集合结构:数据元素放在一起,但是元素间没有关系
- 线性结构:数据元素的有序序列,每个元素有一个前趋和一个后继
- 树形结构:层次关系的数据,除了根元素,每个元素有且只有一个前趋,后继数目不限
- 图形结构:元素之间相互关联,每个元素可以有多个前趋和后继
数据结构的操作
- 创建:创建空的数据结构
- 清除:清空数据结构
- 插入:在指定位置插入新元素
- 删除:删除某个元素
- 搜索:搜索满足特定条件的元素
- 更新:修改某个元素的值
- 访问:访问数据结构中的某个元素
- 遍历:按照某种次序,访问每个元素有且只有一次
存储实现
- 需要储存的信息
- 一组数据元素
- 数据元素之间的关系
- 物理结构
- 存储结点(存放数据元素,一个简单变量、结构体变量或对象)
- 数据元素之间的关系的存储(逻辑结构的机内表示)
- 附加信息(便于运算实现而设置的一些哑结点,如链表中的头节点)
- 关系的存储
- 顺序存储(用存储的位置表示元素之间的关系,主要用数组实现)
- 链接存储(用指针显式地指出元素之间的关系)
- 哈希存储(用存储的位置表示元素之间的关系,主要用数组实现,主要用途是查找)
- 索引存储(所有的存储节点存储在数据区,另外设置一个索引区域表示节点之间的关系)
运算实现
- 操作怎么实现
- 每个运算对应一个算法
- 每个算法用一个函数表示
- 每个数据结构有一组函数
时间性能
- 时间性能的衡量
- 与运行相关的因素
- 机器性能
- 处理的数据量
- 数据分布
- 编译器
- 与运行相关的因素
- 标准操作
- 时间复杂度
- 最好情况的时间复杂度
- 最坏情况的时间复杂度
- 平均情况的时间复杂度
- 大O表示法(上界)
- 两个定理
- 求和定理
- 求积定理
空间性能
- 空间复杂度
- 算法处理过程中所需的额外工作量
- 一般按最坏情况处理
- 用大O表示法
算法优化问题提出
- 慢慢分析,逐步优化
- 最大连续子序列和问题
O(N^3)的算法
- 枚举法