知识补充
函数模板:
定义格式:
template<参数化类型名表>
类型 函数名(参数表)
{
函数体
};
其中,参数化类型名表通用格式为:
class 标识符1,class 标识符2,...
如:template<class T1,class T2>
类模板
定义格式:
template<模板参数表>
class 类名
{
类体说明
};
//类体实现:类体外定义类成员函数的形式
template<类型名 参数名1,...>
函数返回值类型 类名<参数名1,...>::成员函数名(形参表)
{
函数体
}
//类模板实例化:
类名<数据类型1,数据类型2> 对象名
如:SqList<int> list;
定义了一个存放整型元素的顺序表list;
第一章:绪论
基本概念
数据:是对客观事物的符号化表示,是构成信息和知识的原始材料 如:张三,21岁,照片图像
数据项:是构成数据的相对独立的基本单位,反映客观事物的某种特性 如:姓名,年龄,照片
数据元素:是构成数据的基本单元 如:一个班级的每个学生构成数据元素
数据对象:是性质相同的数据元素的集合 如:班级
数据类型:值域和定义在值域上的一组操作的总称
原子类型:char、int、float、double、*、&
结构类型(复合类型):数组、结构、枚举、类
抽象数据类型(ADT)
定义:是与具体计算机内部表示与实现方式无关的数据类型,由一个逻辑上的数学模型以及定义在该模型上的一组操作构成。
三元组定义(D,S,P)
D:数据对象
S:是D上的关系集
P:是对D的基本操作集
数据结构
-
算法+数据结构=程序
程序:为计算机处理问题编制一组指令集
算法:处理问题的策略
数据结构:问题的数学模型 -
数据结构定义:相互之间存在一种或多种特定关系的数据元素的集合
二元组表示(D,S):
D:数据元素的有限集
S:D上关系的有限集如:Arrat = <D,S> D = {a1,a2,...,an} S = {R} = {<a1,a2>,<a2,a3>,...<an-1,an>} 其中,<ai-1,ai>为有序对
-
数据的两种结构关系:
1.逻辑结构:反映逻辑关系,用ADT表达
集合、线性、树状、图状结构
2.物理结构(存储结构):数据如何存储
顺序存储结构和链式存储结构
算法
-
定义:解决某一特定问题的具体步骤的描述,是指令的有限序列
-
五个重要特征:
1):有穷性 2):确定性 3):可行性:算法中所有操作可运用基本操作实现 4):输入 5):输出
-
性能度量指标
-
时间复杂度:按某种算法设计的程序在计算机上执行时花费的CPU时间的度量
-
从算法中选取的基本操作的重复执行次数作为算法的时间量度
T(n) = O(f(n))
不需精确计算基本操作的执行次数,只关注高阶项,忽略高阶项系数和低阶项
-
-
空间复杂度:按某种算法设计的程序在计算机上执行时需要使用的存储空间的度量
-
只需要分析除输入和程序本身之外的辅助变量所占额外空间
若所需额外空间相对于输入数据量来说是常数,则称算法为原地工作
若所需存储量依赖于特定的输入,则通常按最坏情况考虑
S(n) = O(f(n))
-
-