![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
文章平均质量分 80
zyh_xf2017
不会,要去学;落后,要去追赶;跌倒,要能爬起来;学无止境,做只打不死的小强,越战越勇!
展开
-
并查集 学习笔记
并查集是由一组互不相交的集合组成的一个集合结构,并在此集合上dingyile运算Union和Find。即并查集中的元素本身是集合,他们是某个集合的子集,并查集是由这些集合组成的集合结构。 并查集上有两个最基本的运算,Find和Union。函数Find搜索给定元素i所在的子集合,并返回该自己喝;Union运算将两个子集合合并为一个集合。 package DataStructureAndAlgor原创 2016-09-12 23:58:06 · 250 阅读 · 0 评论 -
KMP模式匹配 Java实现
/** * KMP模式匹配 O(m+n) */ package DataStructureAndAlgorithm.KMP; /** * KMP模式匹配关键是要找准回溯位,即要高效准确求得find(Fail函数)数组。 * @author zhen * */ public class KMPAlgorithm { private int[] find; //targe原创 2016-09-05 01:27:35 · 247 阅读 · 0 评论 -
中缀表达式、后缀表达式 Java实现
/** * 后缀表达式计算 */ package DataStructureAndAlgorithm.Expression; import java.util.Stack; /** * 从左往右顺序扫描后缀表达式,遇到操作数就入栈,遇到操作符就从栈中弹出两个操作数, * 执行该操作符规定的运算,并将结果进栈,如此往复,直到遇到“#”结束。 * 弹出栈顶元素即为结果。此处只讨论双目运算,原创 2016-09-03 01:19:44 · 245 阅读 · 0 评论 -
二叉搜索树学习笔记 Java实现
二叉搜索树(二叉排序树)O(log2n); 设结点由关键字值表征,假定所有结点的关键字值各不相同,二叉搜索树或是一棵空二叉树,或具有下列性质: (1)若左孩子不空,则左子树上所有结点的关键字值均小于根结点的关键字值; (2)若右孩子不空,则右子树上所有结点的关键字值均大于根结点的关键字值; (3)左、右子树也分别为二叉搜索树。 若以中序遍历一棵二叉搜索树,将得到一个以关键字值递增的有原创 2016-09-17 17:35:34 · 364 阅读 · 0 评论 -
二叉树基本概念学习笔记
二叉树:是结点的有限集合,该集合或者为空集,或者是由一个根和两棵互不相交的、称为根的左子树和右子树组成。 性质:1、二叉树的第i层(i>=1)上至多有2^i-1个结点。(可用归纳法证明) 2、高度为h的二叉树至多有2^h - 1个结点 3、包含n个元素的二叉树的高度至少为[log2(n+1)] 不小于log2(n+1)的整数原创 2016-09-07 00:11:07 · 283 阅读 · 0 评论 -
哈夫曼树学习笔记 Java实现
package DataStructureAndAlgorithm.Tree; /** * 哈夫曼树结构:data结点数值;left、right:左子树、右子树;weight:结点权重 * @author zhen * * @param */ public class Huffman { private Object data; private double weight; pr原创 2016-09-07 12:37:43 · 274 阅读 · 0 评论 -
二分搜索学习笔记 Java实现
二分搜索算法: 设有一个长度为n的有序表(a0,a1 ... an-1);要求在表中搜索与给定元素x有相同关键字值的元素。 若n=0,显然搜索失败,若n>0,则可将有序表分解成若干个子表,二分搜索:分成两个子表。 现以a[mid]为划分点,mid=(0+(n-1))/2;首先将a[mid]关键字值与指定元素x的关键字值比较 1、当x<a[mid]时,若与x相同关键字原创 2016-09-07 19:38:50 · 248 阅读 · 0 评论