绪论
1.1数据结构的基本概念
数据
数据是信息的载体,是描述客观事物属性的数,字符及所有能输入到计算机中并被计算机程序识别和处理的符号集合,数据时计算机加工的原料。
数据元素 数据项
数据元素: 数据的基本单位
数据项: 数据元素由多个数据项组成
数据结构 数据对象
结构: 各元素之间的关系
数据结构:相互之间存在一种或多种特定关系的数据元素集合
数据对象:具有相同性质的数据元素的集合
数据结构三要素
逻辑结构
- 集合: 各元素同属一统一集合。
- 线性结构: 一对一关系,除第一个元素都有一个前驱;除最后一个元素都有一个后继。
- 树形结构: 元素之间一对多关系。
- 图结构:元素之间多对多关系。
物理结构(存储结构)
- 顺序存储:逻辑上相邻的元素在物理位置上也相邻(物理上连续)
- 连式存储:逻辑上相邻的元素在物理位置上可以不相邻
- 索引存储:需要建立索引表 索引表一般形式是(关键字,地址)
- 散列存储:又称哈希存储,根据关键字计算出存储地址
数据的存储结构会影响存储空间的方便程度
数据的存储结构会影响对数据的运算速度
数据的运算
运算的定义是针对逻辑结构的
运算的实现是针对存储结构的
数据类型 抽象数据类型
数据类型
数据类型:是一个值的集合和定义在此集合上的一组操作的总称
- 原子类型 bool型 int
- 结构类型 其值可以再分解成若干个分量 eg:结构体
抽象数据类型(Abstract Data Type;ADT)
是抽象数据组织及与之相关的操作。
ADT用数学化的语言定义数据的逻辑结构和定义运算。(与具体实现无关)
1.2算法的基本概念
程序=数据结构+算法
算法:对特定问题求解步骤的一种描述。他是指令有限的序列,其中每条指令表示一个或多个操作。
算法的特性
- 有穷性。算法必须有穷,程序是无穷的
- 确定性。每条指令必须有确切的含义,相同的输入必须得到相同的输出。
- 可行性。算法中描述的每次操作都可以通过已经实现的基本运算执行有限次来实现。
- 输入。零个或多个输入
- 输出。一个或多个输出 输入输出是有某种特定关系的量。
好算法的特质
- 正确性,算法应能够正确的求解解决问题。
- 可读性,算法应该具有良好的可读性,以帮助人们理解。//注释
- 健壮性,当输入非法数据时,算法能适当的做出反应或进行处理,而不会产生莫名其妙的输出结果。
- 高效率与低存储需求。时间空间复杂度低。
算法效率的度量(时间复杂度)
事前预估算法时间开销T(n)与问题规模n的关系(T表示“time”)
算法时间开销只考虑最高阶的部分。
大O表示法
- 加法规则 多项相加,只保留最高阶的项,且系数变为一。
- 乘法规则 都相乘。
咒语:常对幂指阶