目录

数据

结构

逻辑结构

集合

线性结构

非线性结构

存储结构

顺序存储结构

链式存储结构

索引存储结构

哈希存储结构

数据运算

算法

算法特性

算法与代码的区别

时间复杂度

时间复杂度关系

空间复杂度


数据

资料元素:是数据的基本单位,一个数据元素由若干个数据项组成

数据项:是数据的最小单位,数据项是用来描述数据元素的

数据对象:是具有相同性质的内容元素的集合

数据结构:是带结构的数据元素的集合

数据结构 = 数据对象 + 结构 + 运算 (结构 = 逻辑结构 + 存储结构)

结构

逻辑结构

逻辑结构:分为集合、线性结构和非线性结构

集合

元素与元素之间没有没有任何关系

线性结构

若为非空集,除了开始结点只有一个后继,终端结点只有一个前驱以外,其他结点都只有一个前驱和一个后继

栈、队列、串、数组、广义表等都是线性结构

非线性结构

一个结点可能有多个前驱和后继

树、图都是非线性结构(树:一对多 ;图:多对多)

存储结构

存储结构:核心分为四种基本存储结构 -> 顺序存储结构、链式存储结构、索引存储结构、哈希存储结构

顺序存储结构

所有元素占用一整块内存空间,逻辑上相邻的元素,在内存上也相邻

链式存储结构

一个逻辑元素用一个结点存储,每个结点单独分配空间,逻辑上连续的结点,内存上不一定连续

索引存储结构

将含有关键字的数据元素中的“关键字和与之对应的地址”,存放在索引表中

索引表中的每一项称为索引项(关键字、地址),关键字:唯一标识一个信息元素;地址:数据元素在主数据表中的存储地址

哈希存储结构

根据元素的关键字,凭借哈希函数计算出一个值,将这个值作为该元素的地址

哈希存储结构的查找速度快,只要给出查找元素的关键字,能立即计算处该元素存储地址

数据运算

对数据的操作,分为运算的描述和运算的实现就是材料运算:

通过同一逻辑结构能够对应多种存储结构

同样的运算,在不同的存储结构中,实现过程是不同的

数据类型

数据类型:是已经构建的数据结构

抽象数据类型:取决于它的逻辑特性,而与计算机内部如何表示和达成无关(抽象数据类型=逻辑结构+抽象运算)

算法

算法:把基于存储结构的运算实现的过程称为算法

算法特性

算法的五个核心特性

有穷性:有穷步后结束,算法能够停止

确定性:算法的每一步有确切的定义,不产生二义性

可行性:算法的每个动作都能被机械的执行

输入:零个或多个输入

输出:一个或多个输出,至少有一个输出

算法与程序的区别

算法:对解决问题方法的描述,要做什么

程序:使用某种计算机语言,对一个算法的具体实现,具体要怎么做

时间复杂度

T(n):是问题规模n的函数,求出算法所有原操作的执行次数/频度

算法执行时间 = 原管理所需时间 * T(n);算法执行时间与T(n)成正比

时间复杂度关系

启用“大O”表示法来,表示时间复杂度

注意:

只求T(n)的最高阶,忽略低阶项和常数

无循环,与难题规模无关,记为常数阶O(1)

只有一重循环,线性阶O(n)

空间复杂度

空间复杂度:算法运行过程中,临时占用的存储空间的大小