版权声明:本文参考了严蔚敏的《数据结构》。未经作者允许,严禁用于商业出版,否则追究法律责任。网络转载请注明出处,这是对原创者的起码的尊重!!!
1 基本概念
-
数据:数据是信息的载体,是描述客观事物属性的数、字符、以及能被输出计算机并被计算机程序处理和识别的符号的集合
-
数据元素:数据的基本单位,数据项是数据的最小单位。
-
数据对象:具有相同性质的数据元素的集合。
-
数据类型:一个值的集合和定义在集合上的一组操作的总称。
- 原子类型:其值不可以再分的数据类型。
- 结构类型:其值可以再分为若干成分的数据类型。
- 抽象数据类型:一个数学模型和定义再该模型上的一组操作。
-
数据结构:数据元素相互之间的关系。
- 逻辑结构:
- 集合:除同属一个集合外,别无其它关系
- 线性结构:一对一(最多有一个前驱,最多有一个后继)
- 树:一对多(最多有一个前驱,可有多个后继)
- 图 :多对多(可有多个前驱,可有多个后继)
- 存储结构(物理结构):数据元素的表示和关系的表示
- 顺序存储:把逻辑相邻的元素存放在物理也相邻的存储单元里,元素之间的关系由存储单元的邻接关系来表示
- 优点:随机存取,每个元素占用最少的存储空间
- 缺点:只能使用相邻的一整块存储空间,会产生外部碎片
- 链接存储:不要求逻辑上相邻的元素在物理上也相邻,借助只是元素存储地址的指针来表示元素之间的关系。
- 优点: 不会产生外部碎片
- 缺点:指针占用额外空间,只能顺序存取
- 索引存储:在存储元素信息的同时,还建立附加的索引表。
- 优点:检索速度快
- 缺点:索引表占用额外空间,增删元素时要同时修改索引表
- 散列存储:根据元素的关键字直接计算出元素的存放地址。
- 优点: 检索、增删元素都很快
- 缺点:散列函数容易出现冲突
- 顺序存储:把逻辑相邻的元素存放在物理也相邻的存储单元里,元素之间的关系由存储单元的邻接关系来表示
- 数据的运算
- 运算的定义:针对逻辑结构
- 运算的实现:针对存储结构
- 逻辑结构:
2 算法和算法评价
-
算法:对特定问题的求解步骤的一种描述。
-
算法的特点
- 有穷性:在有穷步骤和有穷时间内完成
- 确定性:相同输入只能得到相同输出
- 可行性:算法描述的操作可以通过已经实现的基本运算执行有限次数来实现
- 零个或多个输入
- 一个或多个输出
-
算法的目标:
- 正确性
- 可读性
- 健壮性
- 时间和空间开销都尽可能小
-
算法评价:
- 时间复杂度:最坏时间复杂度、平均时间复杂度、最好时间复杂度。不仅依赖于问题规模n,也依赖于输入数据的性质。
- O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(nk)<O(2n)<O(n!)<O(nn)
- 空间复杂度:
- 原地工作:算法所需辅助空间是常量
- 时间复杂度:最坏时间复杂度、平均时间复杂度、最好时间复杂度。不仅依赖于问题规模n,也依赖于输入数据的性质。
版权声明:本文参考了严蔚敏的《数据结构》。未经作者允许,严禁用于商业出版,否则追究法律责任。网络转载请注明出处,这是对原创者的起码的尊重!!!