概念辨别
数据: 信息的载体,能够被计算机识别、存储和加工处理,数据包括文字、表格、图像等。
信息: 数据的内涵,即数据所表达的意义。
数据元素:数据的基本单位(有时称为结点、记录等),通常把数据元素作为一个整体进行处理。例如,一个班的学生数据包括张三、李四等数据元素。有时一个数据元素可以由若干个数据项(也可称为字段、域、属性)组成。
数据项:具有独立意义的不可分割的最小标识单位。
计算机识别、存储和加工处理的对象称为数据
typedef struct
{ int ID;
int x;
int y; ————————————>数据项
}Point; ————————————>数据元素
vector<Point> Points ————>数据
数据结构
数据结构:相互之间存在一种或多种特定关系的数据元素的集合。这些数据元素不是孤立存在的,而是有着某种关系,这种关系构成了某种结构。
数据结构可以看成是带结构的数据元素的集合。
逻辑结构:数据元素之间的逻辑关系的整体。它是数据结构在用户面前呈现的形式。(相邻关系)
存储结构 :数据元素及其关系在计算机存储器中的存储方式,也称为数据的物理结构。
运算:施加在该数据上的操作。
1.在C++中,语句 int a[10];然后用户可以用
a[0]…a[9]来访问数据中的每一个元素,这样的访问时数据数据结构的逻辑结构
2.C语言中,定义了数组 int a[10],*p;
p=a; 语句p=p+1代表p指针指向了数据的第二个元素的地址,对于p指针是使用的数组的物理结构来访问数据
逻辑结构
逻辑结构可以分为:集合(松散);线性结构;树形结构;图形结构。
可以用二元组表示逻辑结构:
D是数据元素的有限集合,即D是由有限个数据元素(简称为元素)所构成的集合。
R是D上的关系的有限集合,即R是由有限个关系
r
j
r_j
rj(1≤j≤m)所构成的集合。
r
j
r_j
rj是指从D→D的关系。
物理(存储)结构
存储结构分为:链式存储结构、顺序存储结构、索引存储结构、散列存储。其中顺序存储具有随机存取特性。索引存储结构增加索引表,查找速度快。
一种抽象数据类型包括:数据的取值范围、数据操作
算法
算法目标:
正确性、可使用性、可读性、健壮性、高效率与低存储量需求。
算法特性:
有限性、确定性、可行性、输入性、输出性
算法分析
分为时间复杂度和 空间复杂度
时间复杂度 :O(n)
空间复杂度:O(n)
对算法进行存储空间分析时,只考察临时变量所占空间。换句话说,函数形参不参与空间复杂度的计算。
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(1)<O(log_2n)<O(n)<O(nlog_2n)<O(n^2)<O(n^3)<O(2^n)<O(n!) O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)
C/C++内存分配
int *p | C | C++ |
---|---|---|
变量分配内存 | p=(int*)malloc(sizeof(int) | p=new int; |
数组分配内存 | p=(int*)malloc(sizeof((int)*n ) | p=new int[n]; |
释放内存 | free ( p);p=NULL; | delete p;/delete []p; |