绪论
1. 基本概念
- 数据: 数据是信息的载体,是描述客观事物属性的数,字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。
- 数据元素: 数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可由若干个数据项组成,数据项是构成数据元素的不可分割的最小单位。例如学生记录就是一个数据元素,它由学号,姓名等数据项组成。
- 数据对象: 是具有相同性质的数据元素的集合,是数据的一个子集。
- 数据类型: 是一个值的集合和定义在这个集合上的一组操作的总称。
- 原子类型: 不可再分
- 结构类型: 可再分解为若干成分的数据类型
- 抽象数据类型: 描述数据的逻辑结构和抽象运算
- 数据结构: 是相互之间存在的一种或者多种特定关系的数据元素的集合。
- 逻辑结构
- 线性结构: 一般线性表,栈和队列,串,数组,广义表
- 非线性结构: 集合,一般树,二叉树,有向图,无向图
- 存储结构
- 顺序存储: 逻辑上相邻的元素,物理位置上也相邻; 可随机存取,单个元素占用空间上,但是会产生较多的外部碎片
- 链式存储: 借助指针来表示元素间的逻辑关系; 不会出现碎片,但是指针会占用额外空间,且只能顺序存取
- 索引存储: 建立索引表,表中的是索引项; 检索快,但是增加和删除要修改索引表,花费更多的时间
- 散列存储: 又称哈希(Hash)存储,根据元素关键字计算元素存储地址; 检索,增删快,但是若散列函数不好,可能出现冲突
- 逻辑结构
2. 算法
-
算法特性
- 有穷性: 必须在有穷步之后结束,每一步都在有穷时间内完成
- 确定性: 每条指令有确切的含义,相同的输入只能得到相同的输出
- 可行性: 算法中的操作都可通过基本运算执行有限次来实现
- 输入: 有零个或者多个输入
- 输出: 有一个或者多个输出
-
算法目标
- 正确性
- 可读性
- 健壮性: 输入非法数据时,算法能适当做出处理
- 效率与低存储量需求: 效率是算法执行的时间,存储量是执行过程所需最大存储空间
-
算法效率衡量
- 时间复杂度: 一个语句的频度是指该语句在算法中被重复执行的次数。 所有语句频度之和记为 T(n)
因此 T(n) = O(f(n))- 严格数学定义: 若T(n)和f(n)是定义在正整数集合上的两个函数,则存在正常数C和n0,使得n>=n0时,都满足0<=T(n)<=Cf(n)
- 空间复杂度: 该算法耗费的存储空间 S(n) = O(g(n))
- 原地工作指所需辅助空间为常量,即O(1)
- 时间复杂度: 一个语句的频度是指该语句在算法中被重复执行的次数。 所有语句频度之和记为 T(n)