
算法与数据结构
文章平均质量分 79
ZQYnn~
这个人很神秘,什么都没有写~
展开
-
排序算法总结一(比较类)
排序算法总结(一)24号上午结束了头疼的四个小时,心里的结算是落了下来,可以回来写文章,这次更加意识菜的不行差的太多,写个文章充实一下自己,总结下最近使用过的排序算法。排序算法时间复杂度(平均)时间复杂度(最好)时间复杂度(最差)空间复杂度稳定性冒泡排序O(n2n^{2}n2)O(nn^{}n)O(n2n^{2}n2)O(11^{}1)稳定选择排序...原创 2019-03-26 00:13:53 · 363 阅读 · 2 评论 -
图的广度优先遍历(Breadth First Search)
文章目录广度优先遍历的理解广度优先遍历的图解过程广度优先遍历实现过程完整的实现过程广度优先遍历的理解广度优先遍历类似于二叉树的层序遍历,假设从图中的顶点 V1{V_{1}}V1出发,访问V1{V_{1}}V1 之后依次访问与V1{V_{1}}V1相邻并且没有访问过的顶点假设为 V2{V_{2}}V2 V3{V_{3}}V3 , 保证V1{V_{1}}V1顶点访问先于 V...原创 2019-06-08 17:54:03 · 449 阅读 · 0 评论 -
图的深度优先遍历 (Depth First Search)
文章目录深度优先遍历的理解实现遍历的过程图解非递归实现遍历递归方法实现遍历完整过程深度优先遍历的理解深度优先搜索(Depth First Search),简称DFS,这种方法类似于二叉树的前序遍历。假设 初始状态时图中所有的结点都没有被访问,从V{V}V点出发,访问此节点, 之后依次访问从V{V}V没被访问的邻接点出发进行遍历,直到与结点V{V}V连通结点全部被访问,之后回溯之前结点到其他...原创 2019-06-08 17:51:22 · 2554 阅读 · 0 评论 -
实现图的最短路径——Dijkstra算法概述
Dijkstra算法实现最短路径概述Dijkstra算法思想Dijkstra算法过程设置关键数组具体图解过程Dijkstra算法实现Dijkstra算法完整过程运行结果分析概述现在给出一个无向网G现在让你从0点开始 求出到每个点的最短路径 如下图:首先我们也不需要去考虑什么算法怎么去实现啊,怎么写代码之类的问题,现在就考虑一下如果让我们自己去选择最短路径,选择出来一个路径会是什么样的呢?...原创 2019-05-17 17:53:10 · 2496 阅读 · 0 评论 -
最小生成树的建立——Kruskal算法
Kruskal算法构建最小生成树Kruskal算法的思想Kruskal算法的图解过程实现Kruskal算法添加的关键结构Kruskal算法的实现过程完整的实现过程实现结果分析Kruskal算法的思想Kruskal算法是一种通过按权值依次递增的次序来选择适当的边来构建最小生成树的,在无向连通网G=(V,E)中,假设G的最小生成树为T=(V,{}),起始转态最小生成树有G中的全部顶点构成,并且没...原创 2019-05-17 16:49:01 · 1061 阅读 · 0 评论 -
最小生成树的建立——Prim算法
概述生成树的概念要建立最小生成树,首先要直到什么是生成数,了解生成树的概念才可以假设在连通图G中有n个顶点, 将G中的n-1条边 构成无回路的连通图称为生成树。最小生成树的概念图的生成树不是唯一的,在一个图中可能存在多个生成树,将个边权值相加之和最小的生成树, 称为最小生成树。Prim算法思路:Prim算法将顶点分为两部分,U和V-U,U中的顶点代表当前生成最小生成树的顶点...原创 2019-05-14 12:08:11 · 2149 阅读 · 0 评论 -
图的建立——邻接矩阵
通过邻接矩阵的方式建立图邻接矩阵(Adjacency Matrix)的存储结构就是通过一维数组存储图中顶点的信息,用矩阵表示图中各个顶点的的临界关系,而矩阵通过一个二维数组表示。图的分类在矩阵中的表示方法在无向图中矩阵的表示无向网中矩阵的表示存储顶点信息的结构存储图的信息时,要通过结构体来定义数据类型,以无向网为例定义如下:#define MAX_VEX 100...原创 2019-05-14 10:57:24 · 13721 阅读 · 0 评论 -
线索二叉树建立及遍历(C实现)
线索二叉树建立及遍历线索二叉树概念二叉树通过二叉链表作为存储结构时,只能得到当前结点的左右孩子信息,而无法得到结点在任一序列的前驱和后继,如果想要保存遍历中的信息,需要在每个结点上添加两个指针域,分别指向当前结点的前驱和后继,指向线性序列中的前驱和后继的指针,称为线索,并且增加两个标志域 如下图设置规定如下:ltag=0 表示lchild 指向左孩子latg=1 表示lchil...原创 2019-05-13 22:35:36 · 2002 阅读 · 0 评论 -
串的模式匹配算法(Burte Force KMP及优化)
朴素的模式匹配算法串的模式匹配是查询主串中是否含有与之匹配的字串,有则返回从主串开始匹配位置后的第一次出现子串的位置,否则返回。以下图为例:主串s中存在相同值的子串t 返回在s中pos后第一次出现的位置 否则 返回 0代码如下 :#include<stdio.h>#include<stdlib.h>#include<string.h>...原创 2019-04-09 23:14:40 · 321 阅读 · 0 评论 -
栈的应用典型应用——计算后缀表达式(c实现)
栈的典型应用——计算后缀表达式表达式可以分为三种:前缀表达式,后缀表达式,中缀表达式。中缀表达式是运算符号在两个数字的之间 也就是我们在数学中常常使用的表达式前缀表达式就是在两个数字之前后缀表达式就是在两个数字之后,也称为逆波兰表达式例如计算a+b 后缀表达式就是 a b + ,同理前缀表达式。根据这个意思中缀表达式转换为后缀表达式也就易于理解 a b 也可能是表达式...原创 2019-04-03 11:35:08 · 1974 阅读 · 0 评论 -
二叉树建立及遍历
二叉树的建立以及遍历利用递归的方式建立二叉树 并以中序遍历的方式读取数据,根据遍历二叉树的三种方式,只需要在递归时修改访问结点的元素即可。 #include <stdio.h> #include <stdlib.h> typedef struct Binode{ char data; struct Binode *Rchild ,*...原创 2019-04-12 10:23:46 · 500 阅读 · 0 评论 -
实现图的最短路径——Floyd算法的概述
文章目录Floyd算法的概述Floyd算法的基本思想Floyd算法的基本步骤Floyd算法的图解Floyd算法的实现过程Floyd算法的完整实现过程分析总结Floyd算法的概述Floyd算法是另一种经典的最短路径算法,将每个顶点作为源点,分别使用Dijkstra算法,Dijkstra算法是对单源点求得的最短路径,现在我们基于Dijkstra算法去实现对每一个顶点求得最短路径,此时我们使用的算法...原创 2019-06-03 16:00:22 · 1265 阅读 · 1 评论