数据结构算法总结-自用
数据结构算法整理
By 舜桀BB
循环双链表的存储结构
typedef struct DNode{ |
栈、队列和数组
栈
队列
//队列是一种操作受限的线性表,只允许在表的一端插入,在表的另一端删除(先进先出) |
数组
树与二叉树
树
//树中的结点数=所有结点的度数之和+1=分支数+1 |
特殊的二叉树
//满二叉树 |
二叉树的性质
//二叉树 |
二叉树的遍历
//二叉树的遍历是指按某条搜索路径访问树中的每个结点,使得每个结点均被访问一次,而且仅被访问一次 |
二叉树常见应用
//求树的深度 |
线索二叉树
//传统的二叉链表存储仅能体现一种父子关系,不能直接得到结点在遍历中的前驱或后继 |
树的存储结构
//双亲表示法 |
树、森林和二叉树的相互转换
//树转换为二叉树 |
树和森林的遍历
树 | 森林 | 二叉树 |
---|---|---|
先根遍历 | 先序遍历 | 先序遍历 |
后根遍历 | 中序遍历 | 中序遍历 |
哈夫曼树和哈夫曼编码
//树的带权路径长度(WPL)=树中所有叶子结点的带权路径长度之和 |
图算法
图的存储
邻接矩阵法
//图的邻接矩阵存储结构定义 |
邻接表法
//邻接表结合了顺序存储和链式存储方法,减少了空间的浪费 |
图的基本操作
//Adjacent(G,x,y) //判断图G是否存在边<x,y> |
广度优先搜索-BFS
bool visited[MAX_VERTEX_NUM]; //访问标记数组 |
BFS求解单源最短路径问题
//求顶点u到其他顶点的最短路径 |
深度优先搜索-DFS
//DFS算法是一个递归算法,需要借助一个递归工作栈,故其空间复杂度为O(|V|) |
排序算法
插入排序
直接插入排序
//插入排序 |
折半插入排序
//优化--折半插入排序 |
希尔排序
//希尔排序 |
交换排序
冒泡排序
//冒泡排序 |
快速排序
//快速排序 |
选择排序
简单选择排序
//选择排序(简单选择排序、堆排序) |
堆排序
//堆排序 |
归并排序
//归并排序 |
基数排序
//基数排序 |
排序算法总结
//平均时间复杂度(时间快):快些归队(快速排序[O(nlog2n)],希尔排序[O(n^(1/3))],归并排序[O(nlog2n)],堆排序[O(nlog2n)]) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 SunnyALion!
评论