数据结构总览
算法的复杂度
时间复杂度
-
概念
- 执行算法所需要计算的工作量,可以理解为基本操作的计算随着数据量的提升,计算的工作量以指数增长,也就是增长率
-
针对递归求解
空间复杂度
线性表
顺序表
链表
顺序表与链表的比较
栈与队列
栈
-
概念
- 是一种只能在队首插入元素的线性表,主要特点是先进后出
-
结构划分
-
操作
-
适用场景
- 解决问题的过程中出现了一个子问题。凭借现在的条件无法解决,则先记下,等待能够解决他的条件出现再取出
-
实际使用场景
队列
串
匹配
树与二叉树
树
-
概念
-
基本术语
-
结点的度:结点拥有的子树个数
-
树的度
-
深度
-
高度
-
双亲
-
兄弟
-
树的存储结构
-
顺序存储结构
-
1.双亲存储结构

克鲁斯卡尔算法中有重要应用
- 概念:用顺序表(数组)表示数,每个元素记录父节点(双亲)
-
链式存储结构
-
孩子存储结构

实际就是图的邻接表结构
- 先用顺序表存储每个节点,节点包含两个属性,一个存储data,一个存储左孩子节点,所有的孩子节点又作为一个链表
-
孩子兄弟存储结构

- 它的结点的第一个孩子如果存在就是唯一的,它的右兄弟如果存在也是唯一的。 因此,我们设置两个指针,分别指向该结点的第一个孩子和此结点的右兄弟
二叉树
-
概念
- 1.在树的基础上,每个节点的度最多只能为2
- 2.子树有左右顺序之分,不能颠倒
-
存储结构
-
遍历算法
-
遍历算法的改进
应用
图
概念
基本术语
存储结构
-
邻接矩阵
- 用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息
-
邻接表
-
十字链表
-
邻接多重表
遍历算法
最小代价生成树
最短路径
排序
分类
-
插入类排序
-
直接插入排序
-
折半插入排序
-
希尔排序
执行到最后也会执行一趟直接插入排序
-
交换类排序
-
选择类排序
-
归并类排序
-
基数类排序
查找
顺序查找
折半查找
分块查找
二分查找+顺序查找
二叉排序树
-
定义
- 左子树上的关键字均小于根关键字,右子树上的关键字均大于根关键字
-
操作
二叉平衡树(AVL树)
树的高度约矮,查找效率越高
B-树(B树)
可以理解为m叉平衡查找树,但是约束更强,要求叶节点在同一层
-
定义
-
特性
- 1.结点的分支数等于关键字数加一
- 2.m阶B-数,每个节点必会有m/2向上取整-1个关键字
- 3.节点内关键字有序
-
操作
B+树
-
特性(与B-树的区别)
- 1.B+树中含有n个关键字就含有n个分支
- 2.m阶B+树,每个节点必会有m/2向上取整个关键字
- 3.B+树中叶子节点包含信息,并且包含了全部关键字,叶子节点引出的指正引向记录
- 4.B+树中,每个非叶节点只起到索引的作用
- 5.在B+树上有一个指正指向关键字最小的叶子节点,所有叶子节点链接成一个线性链表
散列表(Hash表)