数据结构:表示数据间的关系、数据存储的关系以及数据之间的运算
逻辑结构:数据之间的逻辑关系
存储结构:存储这些数据的存储关系
数据结构就是解决数据之间关系的表示,以及数据在计算机中存储的内容。也可以就是研究非数值型数据之间的关系、存储以及运算。
1. 关系---逻辑结构 就是数据之间的抽象关系(先后、从属、邻接、层次)
四种:集合结构、线性结构、树型结构、图型结构
1.
集合
所有的数据元素之间没有必然的联系,只有共同的属性、特点
2.
线性
数据元素之间具有一定的先后顺序
3.
树型
数据元素之间是一种层次关系,使用从属关系形式
4.
图
数据元素之间可能存在多个关系
2. 存储---存储结构 就是数据的逻辑结构在计算机中进行存储方式
四种:顺序存储、链式
(
离散
)
存储、索引存储、散列存储
1. 顺序存储
数据元素存储在一段连续的内存空间,存储数据的位置是连续的(
地址相邻
)
,把数据元素一个
接一个连续存储。
2. 链式存储
数据元素的每个元素存储的内存空间不一定是连续的(
地址不一定相邻
)
;一个数据存在
A
址,一个数据存在B
地址,还是需要把数据串联起来能够表示关系。
3、索存储
除建立存储结点信息外,还建立附加的索引表来标识结点的地址。索引表由若干索引项组成。
4、散列存储
散列存储,又称hash存储,是一种力图将数据元素的存储位置与关键码之间建立确定对应关系的查找技术。散列法存储的基本思想是:由节点的关键码值决定节点的存储地址。散列技术除了可以用于查找外,还可以用于存储
3. 运算---数据操作 能够对数据进行操作
增、删、改、查、排序
算法
算法:解决问题的步骤描述,在计算机算法是一个有穷的指令/语句的有序集合
程序:计算机中以计算机语言的具体实现。
区别:算法不一定依赖于计算机语言,是方法描述;程序是必须依赖于计算机语言算法是有穷的,程序可以是无穷的。
1. 算法与数据结构 ---- 程序 = 数据结构 + 算法
算法设计:依赖于数据结构的逻辑结构
算法实现:依赖于数据结构的存储结构
2. 算法的效率度量 ---- 时间复杂度和空间复杂度
1、时间复杂度
事后统计法:把算法实现,进行运行,会得到算法的运行时间,就是算法的消耗时间
事先估算法(推荐):认为计算机执行指令的时间都是一致的,只需要统计出执行的语句的次数
所有执行的语句的语句频度之和就是算法的语句执行次数,叫做时间复杂度 T(n),问题规模n
大O表示法,n趋近于无穷大就是T(n)留下最高次幂如果是常数次,则用大O表示法:O(n) = 1 (T(n) = 4)
2、空间复杂度
占用空间的大小,叫做空间复杂度
S(n)