Algorithm
贝克街的流浪猫
公众号: 贝贝猫技术分享
展开
-
算法——排序
引言本文整理了常见的排序算法,方便以后查阅。排序算法package bbm.sort;/** * 排序接口 * * @author bbm */public interface Sorter { /** * Sort * * @param nums source data * @return sorted data */ int[] sort(int[] nums); /** * print data原创 2021-04-05 11:15:24 · 144 阅读 · 1 评论 -
算法——序列
引言本文整理了常见的序列相关算法,方便以后查阅。最大子序列package bbm.sequence;/** * 基于分治思想的最大子序列,递归地将序列分割成两半,然后比较左半段,右半段,和中间跨越的段,最终取最大的作为结果 * * 时间复杂度: O(n*log(n)) * 空间复杂度: O(log(n)) 栈 * * @author bbm */public class MaxSubSequence { public int maxSubArray(int[] nums)原创 2021-04-05 11:15:17 · 461 阅读 · 0 评论 -
算法——字符串
引言本文整理了常见的字符串相关算法,方便以后查阅。字符串匹配接口:package bbm.match;import java.util.List;/** * @author bbm */public interface StringMatcher { List<Integer> match(String string, String pattern);}测试:package bbm.match;import java.util.ArrayList;im原创 2021-04-05 11:15:10 · 103 阅读 · 1 评论 -
算法——贪心和动态规划
引言本文整理了常见的动态规划和贪心的相关算法,方便以后查阅。动态规划切割钢条问题package bbm.dp;/** * Serling 公司购买长钢条, 将其切割为短钢条出售。切割工序本身没有成本支出。公司管理层希望知道最佳的切割方案。 * 假定我们知道 Seling 公司出售一段长度为 i 英寸的钢条的价格为P(i=1,2,⋯,单位为美元)。钢条的长度均为整英寸。下图图给出了一个价格表的样例。 * 长度i: 1 2 3 4 5 6 7 8 9 10 *原创 2021-04-05 11:15:03 · 208 阅读 · 0 评论 -
算法——B 树
引言本文整理了B-树的实现,方便以后查阅。B 树实现代码package bbm.tree;/** * B树是一种自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是 * 一个一般化的二叉查找树一个节点可以拥有2个以上的子节点。与自平衡二叉查找树不同,B树适用于读写相对大的数据块的存储系统,例如磁盘。B树减少 * 定位记录时所经历的中间过程,从而加快存取速度。B树这种数据结构可以用来描述外部存储。这种数据结构常被应用在原创 2021-04-05 11:14:56 · 168 阅读 · 0 评论 -
算法——红黑树
引言本文整理了红黑树的实现,方便以后查阅。红黑树package bbm.tree;import static bbm.tree.RedBlackTree.Color.BLACK;import static bbm.tree.RedBlackTree.Color.RED;/** * 1.每个结点或是红色的, 或是黑色的。 * 2.根结点是黑色的。 * 3.每个叶结点(NIL)是黑色的。 * 4.如果一个结点是红色的, 则它的两个子结点都是黑色的。 * 5.对每个结点, 从该结点到其所原创 2021-04-05 11:14:48 · 143 阅读 · 0 评论 -
算法——流
引言本文整理了常见的流相关算法,方便以后查阅。最大流package bbm.graph;import java.util.HashMap;import java.util.HashSet;import java.util.LinkedList;import java.util.List;import java.util.Map;import java.util.Optional;import java.util.Queue;import java.util.Set;import j原创 2021-04-04 12:37:51 · 176 阅读 · 0 评论 -
算法——图的排序
引言本文整理了常见的图排序相关算法,方便以后查阅。图BFSpackage bbm.graph;import java.util.LinkedList;import java.util.List;import java.util.concurrent.LinkedBlockingQueue;import static bbm.graph.BFS.Color.BLACK;import static bbm.graph.BFS.Color.GRAY;import static bbm.g原创 2021-04-04 12:37:45 · 819 阅读 · 0 评论 -
算法——图的最小生成树
引言本文整理了常见的图最小生成树相关算法,方便以后查阅。Kruskalpackage bbm.graph;import java.util.Comparator;import java.util.HashMap;import java.util.HashSet;import java.util.LinkedList;import java.util.List;import java.util.Map;import java.util.Set;/** * 最小权重生成树 *原创 2021-04-04 12:37:39 · 257 阅读 · 0 评论 -
算法——图的最短距离
引言本文整理了常见的图的最短距离相关算法,方便以后查阅。BellmanFordpackage bbm.graph;import java.util.Arrays;import java.util.LinkedList;import java.util.List;/** * 解决单源最短路径问题, 本例中使用的 Bellman-Ford 算法能够处理有负权重的问题,它的思想是通过对每一条边进行松弛化,重复遍历 V-1 次所有边 * (V = 节点数)。 * 这里的松弛化过程就是:我们用原创 2021-04-04 12:37:20 · 2804 阅读 · 0 评论