赞
踩
数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。
数据是计算机程序加工的原料。
数据元素是数据的基本单位。通常作为一个整体进行考虑和处理,用一个数据元素描述一个个体。一个数据元素可由若干数据项组成。
数据项是构成数据元素的不可分割的最小单位。数据项如果再细分,可以称这个数据项是组合项。例如时间可以拆分为年月日。
数据对象是具有相同性质的数据元素的集合,是数据的一个子集。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
数据结构这门课着重关注的是数据元素之间的关系,和对这些数据元素的操作,而不关心具体的数据项内容。
数据类型是一个值的集合和定义在此集合上的一组操作的总称。
bool类型,int类型
结构体
抽象数据类型(Abstract Data Type, ADT):是抽象数据组织及与之相关的操作。
定义一个ADT 就是在“定义”一种数据结构,确定了ADT的存储结构,才能实现这种数据结构。
逻辑结构
集合结构
线性结构:一对一
树形结构:一对多
图形结构:多对多
数据运算
物理结构(存储结构)
若采用顺序存储,则各个数据元素在物理上必须是连续的;若采用非顺序存储,则各个数据元素在物理上可以是离散的。
数据的存储结构会影响存储空间分配的方便程度。
数据的存储结构会影响对数据运算的速度。Eg:在b和d之间插入新元素c
程序 = 数据结构 + 算法
数据结构:要处理的信息。
算法:处理信息的步骤。
算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。
先让算法运行,事后统计时间?因为在不同的机器上运行的时间不同,所以不具有参考,这样不可以。还存在什么问题?
时间开销与问题规模 n 之间的关系
事前预估算法时间开销T(n)与问题规模 n 的关系(T表示“time” )
T
(
n
)
=
T
1
(
n
)
+
T
2
(
n
)
=
O
(
f
(
n
)
)
+
O
(
g
(
n
)
)
=
O
(
m
a
x
(
f
(
n
)
,
g
(
n
)
)
)
T
(
n
)
=
T
1
(
n
)
×
T
2
(
n
)
=
O
(
f
(
n
)
)
×
O
(
g
(
n
)
)
Eg:
T
3
(
n
)
=
n
3
+
n
2
l
o
g
2
n
=
O
(
n
3
)
+
O
(
n
2
l
o
g
2
n
)
=
O
(
n
3
)
结论:
三种复杂度
常数,对数,线性,线性对数,平方,立方,指数,阶乘,幂指时间复杂度
O
(
1
)
<
O
(
l
o
g
2
n
)
<
O
(
n
)
<
O
(
n
l
o
g
2
n
)
<
O
(
n
2
)
<
O
(
n
3
)
<
O
(
2
n
)
<
O
(
n
!
)
<
O
(
n
n
)
O(1) <O(log_2n)< O(n) < O(nlog_2n) < O(n^2) <O(n^3)<O(2^n)< O(n!) <O(n^n)
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
空间开销(内存开销)与问题规模 n 之间的关系
无论问题规模怎么变,算法运行所需的内存空间都是固定的常量,算法空间复杂度为 S(n)= O(1)
注:S表示“Space”。
算法原地工作——算法所需内存空间为常量。
e.g.:int a;一个int:4B,那么就有S(n) = O(4) = O(1)
int a[n]; 那么就有S(n) = O(4n) = O(n)
int a[n][n]; 那么就有S(n) = O(n^2)
空间复杂度 = 递归调用深度
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。