数据结构基础
1. 基础概念:
1)数据:能够输入计算机并被计算机处理的符号集;
2)数据元素:数据的基本组成单位,在计算机中通常作为一个整体考虑;
3)数据项:组成数据元素的、具有独立含义的、不可分割的、最小单位;
4)数据对象:具有相同性质的数据元素的集合;
5)数据结构:相互之间具有一种或多种特定关系的数据元素的集合。即数据结构是带有“结构”的数据元素的集合,“结构”即是数据元素之间的相互关系。通常包括:
a. 数据元素之间的相互关系(逻辑结构);
b. 数据元素及其相互关系在计算机中的表示(存储结构);
c. 对带“结构”的数据元素能进行的操作与操作的实现;
6)数据类型:具有相同性质的值的集合与值集上的一组操作集;
7)抽象数据类型:指对数据类型的描述不依赖于其具体实现,可定义为一个三元组(D, S, P)的形式:
D:数据对象;
S:D上的关系集;
P:对D的操作集;
2. 逻辑结构的四种基本关系:
a. 集合结构:数据元素之间除了同属一个集合外别无其他关系;
b. 线性结构:数据元素之间存在一对一的关系(线性表、队列、串、栈);
c. 树:数据元素之间存在一对多的关系;
d. 图:数据元素之间存在多对多的关系;
3. 存储结构:
• 顺序存储结构:用一组连续的存储单元来依次存储数据元素,数据之间的逻辑关系由元素的存储位置表示。通常通过数组实现,顺序存储结构的访问模式为随机存取。
• 链式存储结构:用任意的存储单元来存储数据元素,数据之间的逻辑关系由指针表示。通常通过指针实现,链式存储结构的访问模式为顺序存取。
4. 时间复杂度T(n)的计算:
1)循环主体重变量参与循环条件的判断:
Eg.1:
int i = 1;
while(i<=n){
i = i * 2;
}
*解析:在循环主体中,循环变量 i 参与了循环条件的判断,假设语句 i = i * 2; 的执行次数为t,
有 2^t≤n。取对数得到t≤〖log〗_2 n;T(n) = O(〖log〗_2 n)。
Eg.2:
int y = 5;
while((y+1)*(y+1)<n)
y = y + 1;
*解析:在循环主体中,循环变量 y 参与了循环条件的判断,假设语句 y = y + 1; 的执行次数为t,
另t = y - 5(从0开始计数),有〖(t−6)〗^2≤n,即t ≤√n−6;T(n) = O(√n)。
2)循环主体中的变量与循环条件无关:
a. 递归:由公式递推;
b. 非递归:直接累计次数。