2017-11-28 20:23:50
数据结构与算法
一 常见的数据类型分为两大类:
1. 基本数据类型, 系统定义的数据类型:char, int, float, double. boolean
int 【 以 64 位的 为例: 2^(-15) -- 2 ^ (15) -1 】
2. 用户自定义数据类型:如 Java 中的类,c/c++ 中的 struct
二 常见的数据结构分两种类型
1. 线性数据结构:可以按线性次序访问元素,但并不强制将所有元素连续地存储在一起,如链表,栈和队列。
2. 非线性数据结构:这种数据结构的元素是以非线性次序来存储和访问。如树和图。
三 抽象数据类型的定义 ADT
1. 数据的声明
2. 运算的声明
四 运行时间分析
当问题的规模(输入规模)增大时, 它研究问题的处理时间是如何增加的。输入规模是指输入元素的个数。
常用的输入类型:
- 数组的大小
- 多项式的次数
- 矩阵中元素的个数
- 用二进制数表示的输入的位数
- 图中的顶点和边
五 常用的增长率
增长率是指随着输入规模的增加,算法运行时间增加的速度,它是输入规模的函数。
时间复杂度 | 名称 | 实例 | 时间复杂度 | 名称 | 实例 |
1 | 常数 | 在链表的前端增加一个元素 | n ^ 2 | 平方 | 求图中两个顶点之间的最短距离 |
log n | 对数 | 在有序数组中查找一个元素 | n ^ 3 | 立方 | 矩阵乘法 |
n | 线性 | 在无序数组中查找一个元素 | 2 ^ n | 指数 | 汉罗塔问题的求解 |
n log n | 线性对数 | 通过分治--归并排序 n个元素 |