11.数据结构
a.“线性”数据结构:元素之间存在1对1的线性关系,施加于对象上的增删改查,类似结构比如学生管理系统;
b.“树”数据结构:元素之间存在1对多的层次关系,计算机与人对弈:
c.“图”数据结构:最短路径问题,网络工程图、网络通信图;
2.基本概念
a.数据(Data):客观事物的符号表示;
b.数据元素(Data Element):数据的基本单位;
c.数据项(Data Object):组成数据元素的最小单位;
d.数据对象(Data Object):性质相同的数据元素集合;
e.数据结构(Data Structure):数据元素之间存在特定关系的集合,包括逻辑结构和存储结构;
1.逻辑结构:从具体问题抽象出来的数学模型,数据元素之间的关系,线性结构包括线性表、栈和队列、字符串、广义表,非线性结构包括树、二叉树、有向图、无向图;
a.集合结构(非线性结构)
b.线性结构
c.树结构(非线性结构)
d.图结构/网状结构(非线性结构)
2.存储结构/物理结构
a.顺序存储结构:连续地址存放
b.链式存储结构:指针类型、结点地址
f.数据类型(Data Type):除了C语言提供的整形、实型、字符型等,允许用户自定义例如数组、结构体、指针等;
g.抽象数据类型(Abstract Data Type,ADT):利用数据类型进一步构造出线性表、栈、队列、树、图等复杂的抽象数据类型,包括三部分:数据对象、数据对象关系的集合、数据对象的基本操作集合;
ADT 抽象数据类别名{
数据对象:(数据对象的定义〉
数据关系:(数据关系的定义〉
基本操作:(基本操作的定义〉
}ADT 抽象数据类型名
3.算法(Algorithm):解决某类问题而规定的有限长的操作序列
a.算法特性
i.有穷性:在有穷时间内执行有穷步后结束;
ii.确定性:应对每种情况,不会产生二义性;
iii.可行性:所有操作可以通过已经实现的运算执行;
iv.输入:有0个或多个输入;
v.输出:至少有1个输出,无输出的算法没有意义;
b.优劣基本
i.正确性
ii.可读性
iii.健壮性:对于非法输入能适当的处理;
iv高效性
1.时间高效:设计合理,效率高,可用时间复杂度衡量;
2.空间高效:存储容量合理,可用空间复杂度衡量;
c.复杂度:问题规模是算法求解问题输入量的多少,一般用整数n表示,在排序运算中n为参加排序的记录数,在矩阵运算中n为矩阵的阶数,在多项式运算中n为多项式的项数,在集合运算中n为集合中的元素,在树有关的运算中n为树的结点个数,在图有关的运算中n为图的顶点或边数,n越大算法执行时间越长,算法执行大致上等于语句执行时间的总和,语句执行时间为该条语句的重复次数和时间的乘积