![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法相关
常用算法相关
shui2104
这个作者很懒,什么都没留下…
展开
-
线性表
线性表 具有相同特性的数据元素的一个有限序列。线性表中元素在位置上是有序的,这种位置上有序性就是一种线性关系。一般表示为:L=(a1,a2,a3...ai,..an,)L=(a_1,a_2,a_3...a_i,..a_n,)L=(a1,a2,a3...ai,..an,) 通常,线性表分为两种:顺序表:将数据一次存储在连续的整块物理空间中;链表:将数据分散的存储在物理空间中,通过指针保持着他们之间的逻辑关系。顺序表 把线性表中的所有元素按照其逻辑顺序依次存储在计原创 2020-08-27 18:43:42 · 915 阅读 · 0 评论 -
栈和队列
栈和队列栈 栈是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。 通常栈的开口端被称为栈顶;相应地,封口端被称为栈底。进栈和出栈基于栈结构的特点,通常只会对栈执行以下两种操作:向栈中添加元素,此过程被称为"进栈"(入栈或压栈);从栈中提取出指定元素,此过程被称为"出栈"(或弹栈);栈的具体实现public class Stack<T> { private ArrayList<T> list; private int size;原创 2020-08-19 22:57:48 · 102 阅读 · 0 评论 -
B树_算法
B树_算法 又称多路平衡查找树,B树中所有节点的孩子节点的最大值为B树的阶。 一棵m阶B树或为空树,或为满足如下特征的树:树中每个节点最多有m颗子树,最多有m-1个关键字所有叶子节点都在同一层,并且不带信息如果根节点不是终端节点,则根节点至少有两颗子树除根节点外,其他非叶子节点至少有(m-1)/2颗子树(即至少有(m-1)/2-1个关键字)非叶子节点的结构为:np0k1p1k2p2…knpn节点的关键字个数指针0关键字1指针1原创 2020-08-13 00:09:31 · 424 阅读 · 1 评论 -
二叉搜索树(BST)和二叉平衡树(AVL)
二叉搜索树(BST)和二叉平衡树(AVL)二叉搜索树(BST) 在二叉搜索树(又称二叉排序树或者二叉查找树)中:若任意结点的左子树不空,则左子树上所有结点的值均不大于它的根结点的值;若任意结点的右子树不空,则右子树上所有结点的值均不小于它的根结点的值;任意结点的左、右子树也分别为二叉搜索树。基本操作和代码实现树的节点class Node { Integer data; Node left; Node right; Node parent; public Node(I原创 2020-08-04 22:42:15 · 571 阅读 · 0 评论 -
内排序_算法
内排序_算法概述根据排序元素所在位置的不同,排序分: 内排序和外排序。 内排序:在排序过程中,所有元素调到内存中进行的排序,称为内排序。内排序是排序的基础。内排序效率用比较次数来衡量。按所用策略不同,内排序又可分为插入排序、选择排序、交换排序、归并排序及基数排序等几大类。 外排序:在数据量大的情况下,只能分块排序,但块与块间不能保证有序。外排序用读/写外存的次数来衡量其效率。分类图1比较:需要比较两个元素的大小(前后)才能进行的排序。插入:遍历到的元素放入之前维护的已完成排序的序列中。原创 2020-07-29 21:27:21 · 1827 阅读 · 0 评论 -
算法_树和二叉树
二叉树树 树是一种非线性的数据结构,数据元素之间之间的关系是一对多的关系。树的节点 节点:使用树结构存储的每一个数据元素都被称为节点。例如上图中的B就是一个节点。 根节点:每一个非空树都有且仅有一个根节点。如果一个节点没有父节点,那么这个节点就是树的根节点。例如上图中的A。 叶子节点:如果节点没有任何子节点,那么次节点就是叶子节点。 父节点、子节点、兄弟节点:上图中,A是B、C、D的父节点。B、C、D是A的子节点。B、C、D为兄弟节点。 节点的度:拥有的子节点数,为该节点的度。原创 2020-07-21 21:12:00 · 160 阅读 · 0 评论 -
算法_最小生成树
最小生成树无向图的连通分量和生成树 对于无向图进行遍历(DFS或BFS)的时候,若是连通图,仅需一次遍历过程就可访问到图中所有的点;若是非连通图,需要多次调用遍历过程,每次调用得到的点的集合和边的集合就构成一个连通分量。 一个连通图的生成树是该连通图的一个极小连通子图,它含有该图所有的顶点,只有构成一棵树的(n-1)条边。如果在一棵生成树上添加一条边,则必定构成环,因为这条边使得依附的两个顶点之间有了第二条路径。一棵有n个点的生成树,有且仅有(n-1)条边,但是有(n-1)条边的图不一定都是生原创 2020-07-13 20:36:20 · 226 阅读 · 0 评论 -
算法_拓扑排序
拓扑排序 图G=(V,E)是一个具有n个顶点的有向图,V中的顶点序列v1,v2,v3…vn为一个拓扑序列当且仅当该顶点序列满足下列条件:若<vi,vj>是图中的边(即顶点vi到顶点vj有一条路径),则在序列中顶点vi必须排在顶点vj之前。 在一个有向图中找一个拓扑序列的过程称为拓扑排序。例如,计算机专业的相关课程如下:课程代号课程名称先修课程C1高等数学无C2程序设计无C3离散数学C1C4数据结构C1,C2C5编译原理原创 2020-07-06 21:47:57 · 594 阅读 · 0 评论 -
最短路径算法
最短路径 从图的一个点到另一个点到路径不止一条,每条路径的长度可能不同,把路径长度最短的那条叫做最短路径。有权图中,应该考虑各边的权值。无权图中,可以将每条边的权值看作是1. 最短路径问题可分为两方面:图中一个点到其余各点的最短路径图中每对点之间到最短路径Dijkstra基本思想 狄克斯特拉算法解决图中一点到其余各点到最短路径的问题。其基本思想位:图G=(V,E)是一个有权有向图,把顶点V分成两组,第一组为已求出最短路径的点的集合(用S表示,初始时S中只有一个源点,以后每求得原创 2020-07-01 00:18:45 · 67158 阅读 · 9 评论 -
算法_图
图图由顶点的集合和边的集合组成。表示一些事物或者状态的表达方法。顶点表示对象。边表示两个对象间的关系。分类 一个图的顶点对是有序的, 则可以称之为有向图。在对有向图中的顶点对排序后, 便可以在两个顶点之间绘制一个箭头。 有向图表明了顶点的流向。 边没有指向性的图叫做无向图。 可以为边赋予权值,来量化两个点之间的一些关系。边上带有权重的图叫做带权图。顶点的度 无向图中顶点的度表示以该顶点作为一个端点的边的数目。 对于有向图,顶点度分为出度和入度。入度表示以该顶点为终原创 2020-06-23 17:41:34 · 476 阅读 · 0 评论 -
贪心算法
贪心 贪心算法就是遵循某种规则,不断贪心地选取当前最有策略的算法设计方法。不从整体最优上加以考虑,它所做出的仅仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性。所以,对所采用的贪心策略一定要仔细分析其是否满足无后效性。无后效性:某个状态以前的过程不会影响以后的状态,只与当前状态有关。基本思路建立数学模型来描述问题把求解的问题分成若干个子问题对每个子问题求原创 2020-06-16 01:01:50 · 230 阅读 · 0 评论 -
枚举算法
枚举算法枚举算法:一种经典的暴力算法,通过遍历所有的候选答案来找到问题的正确解答的解决策略。枚举算法的基本框架解空间:确立候选答案的范围,正确的解空间是应用枚举算法取得正确结果的前提。判定条件:判定某一个解空间中的解是否是正确的解。不同枚举问题的具体方法会不同。优点比较直观,易于理解。建立在穷举所有可能性的结果基础上,所以算法的正确性易于证明。缺点 效率低。枚举算法需要排查解空间中所有的解。一般结构 循环:循环尝试每一个可能的解。 判定语句:判定每一个解是否是正确的原创 2020-06-09 18:47:21 · 410 阅读 · 0 评论