数据结构1-基本概念
基本概念和术语
- Data(数据):所有能被输入到计算机,并被计算机处理的符号集合。可以是数值,也可以是照片,音频。
- Data Element(数据元素):数据的基本单位,作为一个整体考虑或处理。
- Data Item(数据项):分为初等项和组合项。初等项是不可分割的最小识别单位;组合项可以在被划分为更小的项。
- Data Structure(数据结构):相互间存在一种或多种特定关系的,具有相同特征的数据元素的集合。有静态和动态之分。 D a t a S t r u c t u r e = { D , R , M } Data_Structure= \{D,R,M \} DataStructure={D,R,M},其中D是数据元素的有限集合,R是集合中所有数据成员之间关系的有限集合,M是作用在该集合数据成员上的操作。不同的关系构成不同的数据结构,这些关机成为数据的逻辑结构,各种逻辑结构在计算机内的存储和表示是物理结构。同一种逻辑结构可以有不同的物理结构。数据的逻辑结构属于用户级视图,是面向问题的,而存储结构属于具体的实现级视图,是面向计算机的。通常用户使用接口操作集,访问逻辑结构,然后通过私有操作集,映射到物理结构上。
- 数据的存储结构:顺序存储,链接存储,索引存储,散列存储
抽象数据类型(ADT)
特征一:数据抽象。强调实体的本质特征,其所能完成的功能,以及它和外部用户的接口。
特征二:数据封装。将实体的外部特征和其内部实现细节分离,并且对外部用户隐藏其内部的实现细节。
算法的渐进分析(大O表示法)
随着问题规模n的增长,算法的执行时间T(n)的增长率和f(n)的增长率相同时,就可记作
T
(
n
)
=
O
(
f
(
n
)
)
T(n)=O(f(n))
T(n)=O(f(n)),称作算法的渐进时间复杂度。
加深一下指数时间关系的印象:
O
(
2
n
)
<
O
(
n
!
)
<
O
(
n
n
)
O(2^n)<O(n!)<O(n^n)
O(2n)<O(n!)<O(nn)。
但是,如果基本语句的执行次数不仅仅与问题的规模有关,则需要分最好情况,最坏情况,平均情况进行讨论。在计算平均情况时,我们假定输入数据是等概率分布的,进而分析算法的平均复杂度。
算法的空间复杂度
算法空间包括固定空间(输入数据,结果数据,代码程序所需要的空间)和可变空间(中间结果,递归调用所需要的空间)。
我们分析的算法空间复杂度,就是对算法所需的辅助空间度量。
假如随着问题规模
n
n
n的增长,算法运行所需的辅助空间
S
(
n
)
S(n)
S(n)的增长率和
g
(
n
)
g(n)
g(n)的增长率相同时,则记作
S
(
n
)
=
O
(
g
(
n
)
)
S(n)=O(g(n))
S(n)=O(g(n)),称
O
(
g
(
n
)
)
O(g(n))
O(g(n))为算法的空间复杂度。