基本概念
数据(data)
- 是信息的载体,是描述客观事物的数、字符、以及所有能输入到计算机中,被计算机程序识别和处理的符号的集合。
- 分为:数值性数据(整数、定点数、浮点数)
非数值性数据(文字数据)
数据元素(data element)
- 数据的基本单位,又称为元素、结点、记录。
- 一个数据元素可以由若干数据项(Data Item)组成。
数据项(data item)
- 是具有独立含义的最小标识单位。
数据对象(data object)
- 具有相同性质的数据元素的集合。
- 分为:整数数据对象
字母字符数据对象
数据结构(data structure)
- 某一数据对象的所有数据成员之间的关系。
- Data_Structure = {D, S}
- 其中,D 是数据对象, S 是对象中所有数据成员之间的关系的有限集合。
- 四个基本结构:集合、线性结构、树形结构、网状结构
数据的逻辑结构(logical structure)
分类:线性结构:线性表
非线性结构:树、图(或网络)
数据的存储结构(物理结构)(physical structure)
- 从逻辑关系上描述数据
- 从具体问题抽象出来的数据模型
- 数据结构在计算机中的表示,依赖于计算机语言。
- 分类:顺序存储表示、链接存储表示、索引存储表示、散列存储表示
数据处理(data process)
- 将收集到的数据加以系统的处理,归纳出有价值的信息。
- 包括:编辑、排序、归并、分配、建档、更新、计算、链表、查找、查询、分类、摘要、变换
数据类型(data type)
- 一个值的集合和定义在这个值集上的一组操作的总称
- 分类:整型 int 、字符型 char 、浮点型 float 、双精度型 double 、无值 void
抽象数据类型(Abstract Data Type)
- 一个数学模型以及定义在此数学模型上的一组操作
- 抽象数据类型 = 数据结构 + 定义在此数据结构上的一组操作
- 表示:三元组(D,S,P),D是数据对象,S是D上的关系集,P是对D的基本操作集
- 实现:抽象数据类型:类 class
数据对象:数据成员
基本操作:成员函数(方法) - 类的三种访问级别
- Private 私有成分(只允许类的成员函数进行访问)
- protected 保护成分(只允许类的成员函数及其子孙类进行访问)
- public 公有成分(允许类的成员函数、类的实例及其子孙类、子孙类的实例进行访问)
程序产生的五个阶段
- 需求(输入输出)
- 设计(编写算法)
- 分析(选择最优的算法)
- 细化与编码(编写程序)
- 验证(程序验证、测试、调试)
算法(algorithm)
- 为了解决某类问题而规定的一个有限长的操作序列 。
- 特性:
- 有穷性:算法在执行有穷步后能结束
- 确定性:每步定义都是确切、无歧义
- 可行性:每一条运算应足够基本
- 输入:有0个或多个输入
- 输出:有一个或多个输出
算法的性能标准(performance)
- 正确性:不含语法错误、对所有数据运行正确
- 可读性
- 效率:高效、低存储
- 健壮性:当输入非法数据时,也能作出适当反应
空间复杂度度量(space complexity)
- 对算法在运行过程中临时占用存储空间大小的量度
- 包括:存储空间的固定部分、可变部分
时间复杂度度量(time complexity)
- 算法中语句重复执行次数的数量级就是时间复杂度。
- 表示方法:T(n)=O(f(n)),f(n)表示基本操作重复执行的次数,是n的某个函数,随问题规模n的增大,算法执行时间的增长率和f(n)的增长率属于同一数量级
- 运行时间 = 算法中每条语句执行时间之和。
- 每条语句执行时间 = 该语句的执行次数(频度)* 语句执行一次所需时间。
- 优劣次序:O(1) < O(log2n) < O(n) < O(nlog2n) < O(n2) < O(n3) < O(2n)