程序 = 算法 + 数据结构
1.数据结构的基本概念和术语:
数据:客观的符号表示,是所有能输入计算机中并被计算机程序处理的符号总称.
数据元素:是数据的基本单位.(例:一个学生的全部信息)用于完整地描述一个对象,也被称为元素,记录
数据项:组成数据元素的最小单位.(;例:一个学生的学号),只要集合内元素性质均相同,可称为一个数据对象
数据对象:性质相同的数据元素的集合,是数据的一个子集.(例:学生基本信息表)
2.数据结构
数据结构:相互之间存在一种或多种特定关系的数据元素的集合
数据结构包括 逻辑结构 和 存储结构 两个层次.
(1).逻辑结构
数据的逻辑结构是从逻辑关系上描述数据,与数据的存储无关,是独立于计算机的.
两要素:1.数据元素 2.关系(元素间的逻辑关系)
集合结构:数据元素间除了属于同一集合外,别无关系
线性结构:元素之间存在一对一的关系. (一个节点有且只有一个前趋和一个后继,有且只有一个开始 节点和一个终端节点)
树结构:元素之间存在一对多的关系(有一个前驱,多个后继 根节点无前趋,叶节点无后继)
图结构或网状结构:元素之间存在多对多的关系(一个节点有多个前驱,多个后继)
其中 集合结构,图结构,树结构,网状结构都属于非线性结构
(2).存储结构
数据对象在计算机中的存储表示称为数据的存储结构,也称为物理结构.
数据元素在计算机中有两种基本存储结构,分别是顺序存储结构和链式存储结构
顺序存储结构:借助元素在存储器中的 相对位置 来表示数据间的逻辑关系.
链式存储结构:借助指示元素存储地址的 指针 来表示数据间的逻辑关系
顺序存储结构要求所有元素依次存放在一片连续的存储空间中,链式存储结构无需占用一整块存储空间
算法
定义:是为了解决某类问题而规定的一个有限长的指令集
五个特性:1.有穷性 2.确定性 3.可行性 4.输入(0个或多个) 5.输出(一个或多个)
评价算法优劣的基本标准: 正确性 可读性 健壮性 高效性
算法的描述: 自然语言 流程图 程序设计语言 伪代码
算法分析的两个主要方面:时间复杂度 空间复杂度
为了客观反映一个算法的执行时间,可以只用算法中的"基本语句"执行次数来度量算法的工作量
基本语句:指的是算法中重复执行次数和算法的执行时间成正比的语句,对算法的运行时间的贡献最大
算法的时间复杂度: T(n) = O(f(n))
1.在计算算法时间复杂度时,可以忽略所有低次幂项和最高次幂的系数,只取最高次幂
2.算法的执行时间是一个与问题规模n无关的常数,算法复杂度 T(n) = O(1) 称为常量阶