![](https://img-blog.csdnimg.cn/20200114112004573.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
基础算法
文章平均质量分 92
记录一些数据结构中的基础算法!
李小白~
一个算法小白的成长历程!
展开
-
欧拉图和半欧拉图
具有回路的欧拉路径称为欧拉图,不具有回路的欧拉路径称为半欧拉图。若图G中存在这样一条路径,使得它恰通过G中每条边一次,则称该路径为欧拉路径。若该路径是一个圈,则称为欧拉(Euler)回路。具有欧拉回路的图称为欧拉图(简称E图)。具有欧拉路径但不具有欧拉回路的图称为半欧拉图。先说一下欧拉路径、欧拉回路的充要条件:无向连通图G是欧拉图,当且仅当G不含奇数度结点(G的所有结点度数为偶数);无...转载 2020-03-28 11:00:09 · 3227 阅读 · 0 评论 -
并查集简单介绍
定义并查集(Disjoint-Set)是一种可以动态维护若干个不重叠的集合,并支持合并与查询两种操作的一种数据结构。并查集可以高效地进行如下操作。查询元素a和元素b是否属于同一组合并元素a和元素b所在的组:::hljs-center:::并查集的结构并查集也是使用树形结构实现的,不过不是二叉树。每个元素对应一个节点,每个组对应一棵树。在并查集中,哪个节点是哪个节点的父亲以及树的...原创 2020-03-26 12:00:49 · 211 阅读 · 0 评论 -
求最大公因数的两种方法(高效方法)
给定两个数,例如a=27,b=12a=27, b=12a=27,b=12,我们知道a, b的最大公因数为3。下面将介绍两种求最大公因数的高效方法:(1)辗转相除法辗转相除法有一个高大上的名字:欧几里得法。下面模拟辗转相除法求a, b的最大公因数:Created with Raphaël 2.2.0开始a = 27, b = 12c = a%ba = b, b =cb=0?输出最大公因数...原创 2019-07-03 18:15:27 · 35983 阅读 · 7 评论 -
归并排序(分治法)
归并排序是利用归并的思想实现的排序方法,该算法采用经典的分治策略,分治法将问题分成一些小的问题然后递归求解,而治的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之。归并排序的时间复杂度为nlog2nn\log_2nnlog2n。下面用一张图了解用分治法实现归并排序的过程:可以看到,我们将原序列不断进行二分,直至只有一个元素,得到nnn个只含有一个元素的序列,再将这nnn个需序列不断...原创 2019-07-05 12:13:25 · 5319 阅读 · 0 评论 -
表达式求值
表达式求值是程序设计编译中的一个最基本的问题,他的实现是栈应用的一个典型范例:表达式中包含的运算符有(,),+,-,*,/,共七种运算符,我们首先要确定这七种运算符的优先级,显然()的优先级最高,*,/次之,+,-的优先级最低,那么(与)、+与+、-与-⋯\cdots⋯,这些优先级又怎么区分呢?我么用栈求表达式值时是将运算符存在栈中,例如当前栈中有+,当再来+,-时,显然栈中的+可以出栈了,那么...原创 2019-07-15 14:11:41 · 3447 阅读 · 1 评论 -
KMP算法(我的理解)
Knuth-Morris-Pratt 字符串查找算法,简称为 “KMP算法”,常用于在一个文本串S内查找一个模式串P 的出现位置,这个算法由Donald Knuth、Vaughan Pratt、James H. Morris三人于1977年联合发表,故取这3人的姓氏命名此算法。下面先直接给出KMP的算法流程:假设现在文本串S匹配到 i 位置,模式串P匹配到 j 位置,如果j = -1,或者...原创 2019-07-19 16:33:12 · 519 阅读 · 0 评论 -
快速排序法(详解)
假设对以下10个数进行快速排序: 6 1 2 7 9 3 4 5 10 8 我们先模拟快速排序的过程:首先,在这个序列中随便找一个数作为基准数,通常为了方便,以第一个数作为基准数。 6 1 2 7 9 3 4 5 10 8 在初始状态下,数字6在序列的第1位。我们的目标是将6挪到序列中间的某个位...原创 2019-07-01 17:27:49 · 581031 阅读 · 326 评论