【数据结构】基础知识
目录
数据
结构
逻辑结构
集合
线性结构
非线性结构
存储结构
顺序存储结构
链式存储结构
索引存储结构
哈希存储结构
数据运算
算法
算法特性
算法与程序的区别
时间复杂度
时间复杂度关系
空间复杂度
数据
数据元素:是数据的基本单位,一个数据元素由若干个数据项组成
数据项:是数据的最小单位,数据项是用来描述数据元素的
数据对象:是具有相同性质的数据元素的集合
数据结构:是带结构的数据元素的集合
数据结构 = 数据对象 + 结构 + 运算 (结构 = 逻辑结构 + 存储结构)
结构
逻辑结构
逻辑结构:分为集合、线性结构和非线性结构
集合
元素与元素之间没有没有任何关系
线性结构
若为非空集,除了开始结点只有一个后继,终端结点只有一个前驱以外,其他结点都只有一个前驱和一个后继
栈、队列、串、数组、广义表等都是线性结构
非线性结构
一个结点可能有多个前驱和后继
树、图都是非线性结构(树:一对多 ;图:多对多)
存储结构
存储结构:主要分为四种基本存储结构 -> 顺序存储结构、链式存储结构、索引存储结构、哈希存储结构
顺序存储结构
所有元素占用一整块内存空间,逻辑上相邻的元素,在内存上也相邻
链式存储结构
一个逻辑元素用一个结点存储,每个结点单独分配空间,逻辑上连续的结点,内存上不一定连续
索引存储结构
将含有关键字的数据元素中的“关键字和与之对应的地址”,存放在索引表中
索引表中的每一项称为索引项(关键字、地址),关键字:唯一标识一个数据元素;地址:数据元素在主数据表中的存储地址
哈希存储结构
根据元素的关键字,通过哈希函数计算出一个值,将这个值作为该元素的地址
哈希存储结构的查找速度快,只要给出查找元素的关键字,能立即计算处该元素存储地址
数据运算
数据运算:是对数据的操作,分为运算的描述和运算的实现
同一逻辑结构可以对应多种存储结构
同样的运算,在不同的存储结构中,实现过程是不同的
数据类型
数据类型:是已经实现的数据结构
抽象数据类型:取决于它的逻辑特性,而与计算机内部如何表示和实现无关(抽象数据类型=逻辑结构+抽象运算)
算法
算法:把基于存储结构的运算实现的过程称为算法
算法特性
算法的五个重要特性
有穷性:有穷步后结束,算法能够停止
确定性:算法的每一步有确切的定义,不产生二义性
可行性:算法的每个动作都能被机械的执行
输入:零个或多个输入
输出:一个或多个输出,至少有一个输出
算法与程序的区别
算法:对解决问题方法的描述,要做什么
程序:使用某种计算机语言,对一个算法的具体实现,具体要怎么做
时间复杂度
T(n):是问题规模n的函数,求出算法所有原操作的执行次数/频度
算法执行时间 = 原操作所需时间 * T(n);算法执行时间与T(n)成正比
时间复杂度关系
使用“大O”表示法来,表示时间复杂度
注意:
只求T(n)的最高阶,忽略低阶项和常数
无循环,与问题规模无关,记为常数阶O(1)
只有一重循环,线性阶O(n)
空间复杂度
空间复杂度:算法运行过程中,临时占用的存储空间的大小