算法&数据结构
文章平均质量分 76
SKTT1丶faker
好好学习,天天向上
展开
-
几种常用的排序算法(附JAVA源码)
排序算法 排序算法是数据结构学习中比较重要的部分,排序可分为内排序和外排序。内排序是指在整个排序过程中,待排序的所有记录全部放在内存中。外排序是指由于排序的记录个数过多,不能同时放在主存,整个排序过程需要在内外存之间多次交换数据才能进行。一般提到的排序都是内排序,本章主要分析冒泡排序、简单选择排序、直接插入排序、希尔排序、堆排序、归并排序和快速排序的原理并加以实现。 排序顺序统一设为...原创 2018-08-03 03:07:53 · 118 阅读 · 0 评论 -
最短路径(Dijkstra算法和Floyd算法)
一、含义非网图的最短路径是两顶点之间经过的边数最少的路径;网图的最短路径是指两顶点之间经过的边上权值之和最少的路径,并且称路径上第一个顶点是源点,最后一个顶点是终点。 本文主要讲网图的最短路径。二、迪杰斯特拉(Dijkstra)算法迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,算出源点到每一个点的最短距离,直到扩展到终点为止。代码示例://迪杰斯特...原创 2018-08-07 17:48:35 · 727 阅读 · 0 评论 -
动态规划(dynamic programming)
一、相关定义最优化问题(optimization problem)这类问题可以有很多可行解,每一个解都有一个值,我们希望寻找具有最优值的解,我们称这样的解为问题的一个最优解(an optimal solution)。动态规划动态规划与分治法类似,都是通过组合子问题的解来求解原问题。分治法将问题划分为互不相交的子问题,递归的求解子问题,再将它们的解组合起来,求出原问题的解。与...原创 2018-08-27 05:15:01 · 237 阅读 · 0 评论 -
浅析树(附常用算法及JAVA实现)
树一、树的定义树(Tree)是n(n≥0)个结点的有限集。n = 0时称为空树。在任意一颗非空树中: (1)有且仅有一个特定的称为根(Root)的结点; (2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T~1~、T~2~、……、T~m~,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。 1.当n>0时,每棵树的根结点是唯一的; ...原创 2018-08-03 14:59:45 · 304 阅读 · 0 评论 -
图相关(附相关算法JAVA源码)
一、相关定义图(Graph)由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。图中的数据元素称为顶点(Vertex)。V是有穷非空集合,不能是空集。顶点之间的逻辑关系用边来表示,边集可以是空的。无向图(Undirected graphs)无向边(Edge): 若两个顶点之间的边没有方...原创 2018-08-07 17:50:34 · 461 阅读 · 0 评论 -
拓扑排序与关键路径(AOV网和AOE网)
一、AOV网(Activity On Vertex Network)在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,称为AOV网。 不能存在回路。拓扑序列设G(V,E)是一个具有n个顶点的有向图,V中的顶点序列满足若从顶点v~i~到v~j~有一条路径,则在顶点序列中v~i~必须在v~j~之前,称这样的一个顶点为拓扑序列...原创 2018-08-07 17:47:20 · 1805 阅读 · 0 评论 -
图的遍历(DFS和BFS)
图的遍历是指从图中某一顶点出发,访遍图中其余顶点,且使每一个顶点仅被访问一次。一、深度优先遍历(Depth First Search)假设给定图G的初态是所有顶点均未曾访问过。在G中任选一顶点v为初始出发点(源点),则深度优先遍历可定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至...原创 2018-08-07 17:46:01 · 1384 阅读 · 0 评论 -
最小生成树算法(Prim和Kruskal算法)
在一个连通网图中,构造连通网的最小代价生成树称为最小生成树(Minimum Cost Spanning Tree)。普里姆(Prim)算法步骤:生成树的点集为U,边集为Te,设初始点集合为图中任意一点u~0~,Te为空;在所有u∈U、v∈V-U的边(u,v)中找一条权值最小的边并入集合Te,同时该点并入集合U中;对每个点重复以上操作,直到U=V,此时Te即为最小生...原创 2018-08-07 17:44:29 · 196 阅读 · 0 评论 -
浅析字符串
字符串一、串(string)的定义串是由零个或多个字符组成的有限序列,又名叫字符串。在java中,字符串是Unicode序列。字符串相关操作:String s = ""; //空串String h = "string";String l = h.substring(1,2); //子串l="t"//用加号拼接两个字符串String other ..原创 2018-08-01 15:17:30 · 130 阅读 · 0 评论 -
查找算法(附java源码)
一、顺序查找(Sequential Search) 顺序查找又叫做线性查找,是最基本的查找技术,它的查找过程是:从表中第一个(或最后一个)记录开始,逐个进行记录的关键字和给定值比较,若某个记录的关键字和给定值相等,则查找成功;如果到最后一个记录还不相等,查找失败。时间复杂度: 最好的情况是O(1),最坏是O(n),平均为O(n)。二、折半查找(Binary Sear...原创 2018-08-03 22:01:00 · 175 阅读 · 0 评论 -
多路查找树(B树)
多路查找树(muitl-way search tree)多路查找树每一个结点的孩子数可以多于两个,且每一个节点处可以存储多个元素。2-3树2-3树的每一个结点都具有两个孩子(2结点)或三个孩子(3结点)。一个2结点包含一个元素和两个孩子(或没有孩子),且与二叉排序树类似,左子树包含的元素小于该元素,右子树包含的元素大于该元素与二叉排序树不同的是,这个2结点要么没有孩子,要么就有...原创 2018-08-25 20:10:36 · 420 阅读 · 0 评论