1、数据结构基本术语
数据:程序的操作对象,用于描述客观事物。
数据的特点:可以输入到计算机;可以被计算机处理。
数据项:一个数据元素由若干数据项组成
数据元素:组成数据对象的基本单位
数据对象:性质相同的数据元素的集合
例子:一个学校是一个数据,那么学校老师是数据对象,语文、数学、英语是数据元素,第一课、第二课等既是数据项。
结构:数据元素之间不是独立的,存在特定的关系,这些关系既是结构。
数据结构:指数据对象中的数据元素之间的关系。
2、逻辑结构与物理结构
逻辑结构:数据的逻辑结构是从逻辑关系上描述数据,可以看作从具体问题抽象出数学模型。根据数据元素之间的关系的不同特性,逻辑结构通常可以分为集合结构、线性结构、树结构和图结构。其中集合结构、树结构和图结构都属于非线性结构,因此逻辑结构可以分为线性结构和非线性结构两大类。
通常要求的同一逻辑结构中的所有数据元素具有相同的特性,这意味着不仅数据元素所包含的数据项个数要相同,而对应数据项的类型要一致。
物理结构:即存储结构,分为顺序存储结构和链式存储结构。
3、数据类型和抽象数据类型
3.1、数据类型
数据类型:是指一组性质相同值的集合以及定义在此集合的一些操作的总称。
在C语言中,按照取值不同,数据类型分为两类:原子类型和结构类型
原子类型:是不可以分解的基本数据类型,包含整型、浮点型、字符型等;
结构类型:由若干类型组合而成,可以再分解。例如,由若干整型数据组成的整型数组。
3.2、抽象数据类型
抽象-是抽取出事物具有的普遍性的本质。它是抽出问题的特征⽽忽略⾮本质的细节,是对具体事物的⼀个概括。抽象是⼀种思考问题的⽅式,它隐藏繁杂的细节,只保留实现⽬标所必需的信息。
抽象数据类型:是指⼀个数学模型以及定义在该模型上的⼀组操作;例如,我们在编写计算机绘图软件系统时,经常会使⽤到坐标。也就是说,会经常使⽤x,y来描述横纵坐标。⽽在3D系统中,Z深度就会出现。既然这3个整型数字是始终出现在⼀起。那就可以定义成⼀个Point的抽象数据类型。它有x,y,z三个整型变量。这样开发者就⾮常⽅便操作Point 数据变量。
抽象数据类型可以理解成实际开发⾥经常使⽤的结构体和类;根据业务需求定义合适的数据类型以及动作。
4、算法
4.1、算法定义
算法就是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每个指令表示一个或多个操作。
4.2、算法特性
输入输出、有穷性、确定性、可行性
4.3、算法设计要求
正确性、可读性、健壮性、时间效率高和储存量低
4.4、算法的时间复杂度
大O表示法,时间复杂度表示及术语:
O(1) < O(log n) < O(n) < O(nlog n) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)
4.5、空间复杂度
算法的空间复杂度通过计算算法所需的存储空间实现,算法空间复杂度的计算公式记做:S(n) = n(f(n)),其中,n为问题的规模,f(n)为语句关于n所占存储空间的函数。
程序空间计算因素:寄存本身的指令、常数、变量、输入、对数据进行操作的辅助空间
在考量算法空间复杂度,主要考虑算法执行时所需要的辅助空间。