
算法
文章平均质量分 72
lhever_
这个作者很懒,什么都没留下…
展开
-
从文件中读取,并归并排序
import org.apache.commons.io.IOUtils;import java.io.*;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * <p>类说明:</p> * * @author lihong10 2021/5/21 14:31 * @version v1.0 * @modificationHistory===========.原创 2021-05-21 17:59:50 · 1068 阅读 · 1 评论 -
三针重叠问题算法整理
三针重叠问题转载 2016-12-30 16:26:25 · 1503 阅读 · 0 评论 -
每日一省之————加权无向图的最小生成树算法(Prim/Kruskal算法)
1.带权重的边的数据结构/** * 该类对象可以表示图中的一条边 * @author lhever 2017年2月19日 下午5:10:49 * @version v1.0 */public class Edge implements Comparable<Edge>{ private int v; private int w; private final do原创 2017-02-27 23:26:13 · 1720 阅读 · 0 评论 -
每日一省之———— 递归 + 回溯 求集合的幂集
import java.util.ArrayList;import java.util.List;/** * 所谓幂集(Power Set), 就是一个集合中所有的子集(包括全集和空集)作为元素构成的集合。 * * 该类通过遍历一棵满二叉树,求解集合的幂集。程序的原理是:把求幂集元素的过程看作是在先序遍历一棵深度为n+1的满二叉树, * 从根节点开始,访问左孩子表示幂集元素(集合的子集)原创 2017-02-22 00:44:06 · 2183 阅读 · 0 评论 -
每日一省之————有向图(有向非赋权图)
有向图数据结构的复习原创 2017-02-14 00:48:29 · 1699 阅读 · 0 评论 -
每日一省之————加权有向图的最短路径问题
1 加权有向图中边的数据结构/** * 该类用于表示有向图中的一条有向边 * @author lhever 2017年3月2日 下午11:25:30 * @version v1.0 */public class DirectedEdge{ private final int v; private final int w; private final double原创 2017-03-03 00:51:03 · 2958 阅读 · 0 评论 -
每日一省之 ———— 一个简单的跳跃表(Skip List)的Java实现
第一次知道跳表这种数据结构的时间大概是在一年前(说这句话时候可能就被无数同胞鄙视了),但自己却不知道如何实现。当时印象最深的就是这篇文章跳跃表(Skip List)-实现(Java),因为这篇文章中的Skip List的实现方式最让人容易理解,我最初也是通过这篇文章对跳表有了更进一步的认识,所以,真的要在这里感谢这篇文章的主人。一年之后,我发现自己对跳表的认识又模糊不清了,所以最先想到的也是这篇文章原创 2017-02-14 23:37:06 · 864 阅读 · 0 评论 -
八皇后问题的递归解法(最易理解的版本)
八皇后问题是一个古来而著名的问题,该问题是19世纪著名的数学家高斯同学提出来的。在8*8的国际象棋上摆放八个皇后,使其不能互相的攻击,也就是说,任意的两个皇后不能放在同一行或则是同一个列或者是同一个对角线上,问有多少个摆放的方法 本算法的思路是按行来规定皇后位置,第一行放置一个皇后,第二行放置一个皇后, 第N行也放置一个皇后… 这样, 可以保证每行都有一个皇后,那么各行的皇后应该放置在那原创 2017-03-23 20:56:52 · 17918 阅读 · 3 评论 -
Java模拟两个大整数的加法、乘法、除法
package ddd;import java.math.BigInteger;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;public class BigInteg原创 2017-03-14 17:52:37 · 3473 阅读 · 2 评论 -
蛇形打印(java实现)最易理解的版本
蛇形矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。 ` /** * 蛇形矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大, 向左变大,向上变大,如此循环。 * @author lhever 2017年4月4日 下午3:24:47 * @version v1.0 */public class SnakeP原创 2017-04-04 15:34:37 · 2760 阅读 · 3 评论 -
括号匹配算法的一种正确实现(java)
本人需要判断一个字符串里括号是否成对出现,发现正则满足不了或者正则表达式太复杂,只能用java算法实现了,网上找了几段代码,发现要么不合适,要么有的情况会误判,无奈只能参考那些例子进行改造了,现在贴出来,希望对某些人有用。import java.util.HashMap;import java.util.Map;import java.util.Stack;public class match原创 2017-04-04 17:58:49 · 14193 阅读 · 2 评论 -
jdk之BitSet位运算解析
不久前项目中用到了BitSet,由于之前没怎么使用过它,所以为了强化,读了几篇分析BitSet源码的文章,算是熟悉了这个类的相关API。读完之后兴致冲冲,非常想要写一篇截止目前最走心的BitSet源码分析博文。然而,各种原因耽误了之后,本人是没有这个心情写了,并且也觉得没必要,因为相关文章还是很多的。然而,几乎所有的这些有关BitSet源码分析的博文都有一个通病: 这些文章几乎无一列外都原创 2017-06-15 21:10:42 · 1075 阅读 · 1 评论 -
每日一省之————无向图(无向非赋权图)
已经好久没有复习数据结构了,今天复习的是无向图。由于本人确定自己写的注释还是蛮认真的,所以就直接贴代码了。接下来张贴的几段代码或者说是几个类都是循序渐进的。只要你还记得图的定义(具体是无向图),应该都不难理解。好了,废话不多说,之间看代码吧。1 无向图数据结构的构建(图的表示)/** * 一个可以用来表示无向图的类 */public class Graph { private stati原创 2016-12-11 22:42:12 · 2317 阅读 · 0 评论 -
每日一省之——使用递归法实现二叉查找树(BST),API齐全
本来国庆该出去转转的,可是在杭州朋友不多。现在的公司规模又太大,没上一家公司凝聚力强,想找同事出来聚聚,后来发现有心无力。所以国庆还是敲代码吧。不过此刻刚写完二叉树,注释也不全。改天再完善吧。之所以有勇气贴出来,是觉得对得起自己的这番费心。并且,实现二叉搜索树常常需要实现的API我也尽可能补全了。不多说了,看代码吧。改天完善。原创 2016-10-02 01:28:50 · 1279 阅读 · 0 评论 -
每日一省之————字符串排序算法(包括低位优先、高位优先、三向快速排序)
今天的目的是循序渐进的分别复习字符串排序的低位优先算法、高位优先算法和三向快速排序算法。不过,在开始这三中算法之前,作为基础,我们先从一种字符串的分组算大讲起。一:字符串的分组算法/** 假设存在下列字符串,这些字符串都以一个数字结尾, 结尾的数字代表这个字符串的组号(组号的范围在0-9之内), 现在我们想要将这些字符串按照其所属的组号归类,并且归类以后组号小的在前面,组号大的在后面。可以使用如原创 2016-07-24 15:37:12 · 4316 阅读 · 0 评论 -
每日一省之————快速排序算法
/** * 快速排序算法 * @author lhever_ 2016年7月23日 下午10:37:55 * @version v1.0 */ public class QuickSort {/** * 快速排序寻找中间值算法 * @param arr * @param low * @param high * @return int * @author lhever_原创 2016-07-25 08:56:46 · 625 阅读 · 0 评论 -
字符串搜索算法Boyer-Moore的Java实现
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2016-06-17 09:23:33 · 5385 阅读 · 0 评论 -
每日一省————使用二叉堆实现优先队列
今天,本人主要想复习优先队列这种数据结构。虽然标题号称“每日一省“,但是工作的人身不由己,已经很多天没有更新了。哈哈,废话不多说,直接进入正题吧。1 优先队列的概念:优先队列是一种抽象的数据结构,队列中的每个元素都有一个优先级值。优先级值用来表示该元素的出对的先后次序。 优先队列是至少允许插入操作和删除最小(或者最大)元素这两种操作的数据结构。通常,优先队列通过二叉堆来实现。原创 2016-08-28 11:40:04 · 1000 阅读 · 0 评论 -
每日一省之————利用数组和链表实现一个简单的HashMap
今天本人想要复习的是哈希表(散列表)的概念及具体实现,为此用java写了一个简单的实现,但仅仅只是实现了一些简单的功能,不过通过这个简单的实现的确可以帮助我们进一步理解JDK中的HashMap,当然,想要进一步了解就直接阅读JDK中的HashMap的源码啦。实现代码如下,有注释,本人就不进一步阐述了:原创 2016-09-03 15:54:29 · 1974 阅读 · 0 评论 -
每日一省之—基于双数组和二分查找法实现符号表(或者字典)
今天想要复习的数据结构是符号表,也称为字典。可能说到这里大家还是没明白我要复习一种什么样的数据结构。此时我不得不承认本人文笔真的是不太好。所以,还是说的更加具体点吧,这种数据结构的功能对使用者来讲,与JDK中的HashMap极其相似:可以按键值对进行数据的存储,然后根据键可以查找到与其对应的值。只不过,我这里讲的符号表在底层实现上:存储数据利用的是两个大小相等的数组。其中一个数组存储键,另一个数组存原创 2016-09-16 17:35:13 · 1048 阅读 · 0 评论 -
每日一省之————递归法计算数组的所有排列组合
本算法的目的: 给定一组数字,求这些数字的所有可能的排序组合。算法内部逻辑:模拟人进行排列组合的过程。 1. 假设仅有2个数字, 则交换其位置,可以得到所有可能的组合,也即2组。 2. 假设有3个数字。则取出第1个数字,将第2和第3个数字交换位置后得到2种组合,然后在每种组合的开头插入第1个数字。得到了3个数字排列组合的其中两种; 然后取出第2个数字,将第1和第3个数字交换位置后得到原创 2016-08-14 14:08:05 · 3959 阅读 · 2 评论 -
每日一省————链表之栈的简单实现
这是一个栈的简单实现,同时也实现了Iterable接口。代码较简单,比起JDK自带的Stack类,简直弱爆了。但本人主要是为了复习而已,个人觉得还是有一定参考价值的,有兴趣的看一看吧。具体实现代码如下:import java.util.Iterator;import java.util.NoSuchElementException;public class Stack<T> implements原创 2016-08-14 16:44:44 · 475 阅读 · 0 评论 -
每日一省————链表之队列的简单实现
这是一个队列的简单实现,同时也实现了Iterable接口。代码较简单,比起JDK自带的队列实现,简直弱爆了。但本人主要是为了复习数据结构而已,个人觉得还是有一定参考价值的,有兴趣的看一看吧。具体实现代码如下:import java.util.Iterator;import java.util.NoSuchElementException;public class Queue<T> implemen原创 2016-08-14 18:05:19 · 449 阅读 · 0 评论 -
每日一省之—使用线性探测法(仅利用数组作为底层数据结构)实现HashMap
看这篇文章前,不妨看我的上一篇文章:每日一省之————利用数组和链表实现一个简单的HashMap。这样一来,相信大家对Java中的HashMap会有一个更全面的认识。好了,废话不多说了,直接上代码吧:原创 2016-09-06 00:26:00 · 859 阅读 · 0 评论 -
每日一省之————红黑树的java实现
今天本打算复习红黑树,可是红黑树的概念都记得有些模糊不清了。所以网搜复习了一下其基本概念。也因此发现了一篇介绍红黑树的好文章。这篇文章配有大量图示,甚至有动态图演示左旋和右旋操作。所以也给大家分享下: 浅谈算法和数据结构: 九 平衡查找树之红黑树至于自己的实现代码,本人还是希望像之前的几篇关于算法的文章一样,尽可能的将相关的API实现全面一些。不过,已经很晚了,改天补上。既然没有代码,还写这堆废话原创 2016-10-17 23:04:42 · 1569 阅读 · 0 评论 -
每日一省之————二分查找法demo
/** * 二分查找法 * @author lhever_ 2016年7月23日 下午10:05:48 * @version v1.0 */public class BinarySearch{ /** * 查找指定整数在数组中的索引位置,找不到则返回-1; * @param key * @param a * @return int原创 2016-07-23 22:31:59 · 981 阅读 · 0 评论