数据结构与算法概述
计算机求解问题的一般步骤
- 问题抽象出数学模型
- 问题所涉及的数据量大小及数据之间的关系
- 如何在计算机中存储数据及体现数据之间的关系
- 处理问题时需要对数据进行和种运算。
- 所编写的书城的性能是否良好。
抽象数据类型
ADT <抽象数据类型名>{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
} ADT<抽象数据类型名>
-其中数据对象和数据关系的定义用伪码描述。
-基本操作的定义是
<基本操作名>(<参数表>)
初始化条件:<初始条件描述>
操作结果:<操作结构描述>
- 初始条件:描述操作执行之前数据结构和参数应满足的条件;若不满足,则操作失败,返回相应的出错信息。
- 操作结果:描述操作正常完成之后,数据结构的变化状况和应返回的结果。
逻辑结构
- 数据的逻辑结构
- 线性结构
- 一般线性表
- 受限线性表
- 栈和队列
- 串
- 线性表推广
- 数组
- 广义表
- 非线性结构
- 集合
- 树形结构
- 一般树
- 二叉树
- 图状结构
- 有向图
- 无向图
- 线性结构
物理存储结构
- 顺序存储结构
- 链式存储结构
- 复合存储结构
数据操作
- 建立(Create)一个数据结构
- 消除(Destory)一个数据结构
- 从一个数据结构中删除(Delete)一个数据元素
- 把一个数据元素插入(Insert)到一格数据结构
- 对一个数据结构进行访问(Access)
- 对一个数据结构中的元素进行修改(Modify).
- 对一个数据结构进行排序(Sort)
- 对一个数据结构进行查找(Search).
复杂度分析
- 算法五个特性
- 有穷性
- 确定性
- 可行性
- 输入
- 输出
- 算法设计的要求
- 确定性
- 可读性
- 健壮性
- 通用性
- 效率与存储量需求
- 算法效率的度量
- 相关因素
- 依据算法选用何种策略;
- 问题的规模
- 程序设计语言
- 编译程序所产生的机器代码的质量
- 机器执行指令的速度;
- 时间复杂度
- O(1):常量时间阶
- O(n):线性时间阶
- O(logn):对数时间阶
- O(nlogn):线性对数时间阶
- O(n^k):k次方时间阶
- 空间复杂度 S(n)=O(f(n))
- 相关因素
总结:
- 计算机求解问题的一般步骤中,模型抽象和规模分析,是为了能够确定逻辑结构和存储结构,以及进一步确定需要的运算,然后分析数据类型的复杂度。线性表和树可由顺序存储结构和链式存储结构实现,图可由复合存储结构实现。学习一种算法可先确定其抽象数据结构及ADT,在对其复杂度进行分析。