基本概念
基本概念和术语
- 数据:信息的载体
- 数据元素:数据元素是数据的基本单位,一个数据元素可由若干个数据项组成,例如学生记录
- 数据项:构成数据元素的最小单位,例如学生记录里面的学号
- 数据对象:具有相同性质的数据元素的集合,是数据的一个子集,例如一个集合 N={1, 2}
- 数据类型:一个值的集合和定义在这个集合上的一组操作的总称,分为:
- 原子类型:其值不可再分的数据类型
- 结构类型:其值可以再分解为若干成分的数据类型
- 抽象数据类型:抽象数据组织以及与之相关的操作
- 数据结构:相互之间存在一种或多种特定关系的数据元素的集合,包括以下三个方面:
- 逻辑结构:决定算法的设计
- 存储结构:决定算法的实现
- 数据的运算
数据的三要素
-
逻辑结构
-
指的是数据元素之间的逻辑关系,与数据的存储无关,独立于计算机
-
逻辑结构可分为:
线性结构 非线性结构 线性表、栈、队列、串、数组 集合、树形结构、图形结构
-
-
存储结构
- 也称物理结构
- 它包括数据元素的表示和关系的表示
- 是用计算机实现的逻辑结构,依赖于计算机语言
- 存储结构可分为:
- 顺序存储
- 优点:随机存取,空间利用率高
- 缺点:只能用相邻的一整块存储单元而会产生较多的外部碎片
- 链式存储
- 优点:不会出现碎片,能充分利用所有存储单元
- 缺点:只能顺序存取,空间利用率低(存储指针占用额外的存储空间)
- 索引存储
- 优点:检索速度快
- 缺点:增删数据慢(要修改索引表),空间利用率低(索引表占用额外的存储空间)
- 散列存储(哈希存储)
- 优点:检索、增加和删除结点很快
- 缺点:若散列函数不好,则可能出现元素存储单元的冲突,而解决冲突需要增加时间和空间的开销
- 顺序存储
算法与算法的评价
算法的基本概念
- 算法是对特定问题求解步骤的一种描述
- 算法是指令的有限序列,每条指令表示一个或者多个操作
算法的特性与目标
| 特性 | 目标 |
|---|---|
| 有穷性、确定性、可行性、输入、输出 | 正确性、可读性、健壮性、效率和低存储量需求 |
算法效率的度量
-
时间复杂度
- 指的是该语句在算法中被重复执行的次数,记为 T(n)=O(f(n))
- 不仅取决于问题的规模 n,也取决于待输入数据的性质(例如输入数据元素的初始状态)
- 渐进时间复杂度关系:O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)
-
空间复杂度
- 指的是该算法所耗费的存储空间,记为 S(n)=O(f(n))
- 算法原地工作指的是所需要的辅助空间为常量,即为 O(1)