算法
文章平均质量分 73
宅男小何
一个快乐的2B程序猿
https://github.com/lazyp/itresource 好的文章资源推荐
展开
-
根据二叉树的前序和中序获得后序,后序和中序获得前序
根据二叉树的前序和中序获得后序,后序和中序获得前序的实现。可以用递归,呵呵!下面是我写的测试程序:package algorithm;public class BTree { private static StringBuilder postOrderReverse = new StringBuilder();// 储存后序的一个逆行 private static St原创 2010-01-31 21:31:00 · 2930 阅读 · 4 评论 -
求一个序列的所有组合的算法
<br /> 直接用递归实现:<br /> import java.util.Arrays;import java.util.LinkedList;import java.util.List;/** * * @author lazy_p * @date 2010-9-1 * */public class ZuheTest1 { static void listAll(List list, String prefix) { System.out.pri原创 2010-09-01 16:49:00 · 2031 阅读 · 0 评论 -
深入分析集合List的排序Collections.sort
List接口本身未提供sort的方法。在jdk中提供了一个集合操作工具类Collections来操作集合。查看Collections类,可以发下如下两个方法:static Comparable> voidsort(List list)根据元素的自然顺序 对指定列表按升序进行排序。static原创 2012-03-26 23:04:24 · 3420 阅读 · 0 评论 -
网易2011校园招聘笔试题-IP地址提取并统计次数
统计日志中符合(GET ip 请求数)这个条件的请求总数。 这道题考的其实就是正则表达式的知识点,笔试的是时候时间太紧了,细节没写对,杯具。。。 回来自己写了下,发出来纪念下,呵呵!package test1; import java.util.regex.Matcher; import java.util.regex.Pattern;public class Wang {原创 2010-09-29 13:17:00 · 1040 阅读 · 0 评论 -
求一个字符串中出现次数最多的字符的高效算法
/** * 求一个字符串中出现次数最多次数的字符 * @author 懒人-小何 * */public class StringTest { public static void main(String[] args) { int[] num = new int[123]; //用来记录每个字符出现的次数 String str = "abzbbzcczz原创 2009-12-23 19:14:00 · 1518 阅读 · 0 评论 -
找出字符串中第一个只出现过一次的字符和位置
题目:找出字符串中第一个只出现过一次的字符和位置比如:abcebad 只出现过一次的第一个字符应该是c,第3个。@左耳朵耗子 大哥说的算法如下: int[] pos = new int[256]; Arrays.fill(pos, -1); for (int i = 0, len = s.length(); i < le原创 2013-07-31 20:22:16 · 4640 阅读 · 0 评论 -
位运算小结
当你做一个非常大的数的乘除运算时,你就会为位运算感叹,为之惊人的速度而感动!下面是我总结的一点点位运算的应用: 位运算符有:&(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。 优先级从高到低,依次为~、&、^、|。 1. 左移1位相当于乘以2 2. 右移1位相当于除2 >>右移2位相当于乘以4 依次类推左移N位相当于除2^n原创 2009-12-28 13:46:00 · 711 阅读 · 0 评论 -
JAVA灰度化、二值化图片如此简单方便
package image;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;public class ImageDemo { public void binaryImage() throws IOE原创 2011-12-30 19:07:38 · 36137 阅读 · 8 评论 -
后缀树的构造方法-Ukkonen详解
最近在学习后缀树的构造,在网上找了好久发觉国内详解它的构造的文章胜少,在苦苦寻觅了许久,终于发现了一个网友翻译的一篇文章,很好,于是我转帖出来,希望能有更多的人受益,也希望国内多一些英文高手多翻译一些国外的技术文章,好让我们这些英文很烂的人受益,呵呵! 后缀树Fast String Searching With Suffix Trees原著Mark Nelson. Fast string searching with suffix trees. 1996.构造法E. Ukkonen. On-line c转载 2010-09-13 21:45:00 · 1911 阅读 · 2 评论 -
Prim 普里姆算法的java实现
<br /> 普里姆算法,主要是用于求最小生成树的典型算法,其实现简单。<br /> package algorithm;import java.util.Scanner;public class Prim { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { int n = sc.nextInt();原创 2010-07-31 18:17:00 · 2679 阅读 · 1 评论 -
求大数阶乘结果的位数
可以利用斯特林Stirling公式求得一个数的阶乘的结果到底有好多位,这个可以应用于求大 数的阶乘的结果的位数。stirling公式的具体知识请见: http://baike.baidu.com/view/2019233.htm 用Stirling公式计算n!结果的位数时,可以两边取对数,得: log10(n!) = log10(2*PI*n)原创 2010-05-20 13:38:00 · 1581 阅读 · 0 评论 -
二分搜索算法
从java源代码中的二分搜索算法的实现: private static int binarySearch0(long[] a, int fromIndex, int toIndex, long key) { int low = fromIndex; int high = toIndex - 1;原创 2009-12-21 10:14:00 · 789 阅读 · 0 评论 -
十进制、二进制之间的转换
传统的将十进制转化为二进制是展转除2取余。下面是一种在int 范围内中的一种高效的转化算法: /** * * @author 懒人-小何 * */public class IntegerTrans { private final static int[] trans = new int[] { 1, 2, 4, 8, 16, 32, 64, 128,原创 2009-12-24 22:04:00 · 736 阅读 · 0 评论 -
大数的阶乘
前一段时间swing & swt群里一个大牛叫我用自己的方法写个大数的阶乘,前一段时间抽了一点时间,写出来了,效率不太好,现在贴出来共享下,希望csdn中的大牛们来给我优化优化,提出更优美的算法,恶哈哈! pckage org.loonsoft.test;import java.util.Scanner;public class BigIntegerFac { /*原创 2009-12-24 22:55:00 · 681 阅读 · 0 评论 -
凯撒密码的原理以及实现
凯撒密码是一种古老的加密算法。密码的使用最早可以追溯到古罗马时期,《高卢战记》有描述恺撒曾经使用密码来传递信息,即所谓的“恺撒密码”,它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。因据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。这是一种简单的加密方法,这种密码的密度是很低的,只需简单地统计字频就可以破译。 现今又叫原创 2010-03-10 10:53:00 · 5061 阅读 · 0 评论 -
树状数组模版
1.一维树状数组 // 获得2^kpublic static int lowbit(int i) {return i & -i;}//修改结点public static void add(int i, int value) {while (i c[i] += value;i += lowbit(i);}}//求和public stat原创 2010-01-02 13:33:00 · 642 阅读 · 0 评论 -
“顶嵌杯”全国嵌入式系统C语言编程大赛初赛解题报告
http://acm.pku.edu.cn/JudgeOnline/showcontest?contest_id=1345 A题:位操作 import java.util.Scanner;public class Main { public static String trans(String[] s) { Long l = Long.parseLong(s[0].trim(原创 2010-03-24 22:42:00 · 1217 阅读 · 0 评论 -
递归删除某个文件夹下面的所有文件和文件夹
递归删除某个文件夹下面的所有文件和文件夹,包扩本身,实例代码如下:/** * 删除某文件夹下面的所有文件和文件夹 * * @param path */ public static void deleteAll(String path) { File f = null; f = new File(path); // System.out.print原创 2010-04-30 21:43:00 · 1072 阅读 · 0 评论 -
堆排序
堆排序适合于大量数据的排序,堆排序的前续工作花费的时间比较多,下面我们以大根堆为例说说:大根堆,就是根节点是最大的元素,所以每次把最大的元素选出来,与最后的一个元素交换,然后再把前n-1个元素(也就是除最后一个元素)进行一个堆的重构,让其具有大根堆的性质,重复上面的过程,直到只剩一个元素为止。这个过程其实是个选择排序的过程,但是少了交换的次数,堆排序的时间复杂度是nlogn。 下原创 2010-05-07 13:47:00 · 755 阅读 · 0 评论 -
java归并排序算法
归并排序的时间复杂度是:nlogn主要是用到二路归并排序,也就是把两个有序集合合并为一个有序集合。下面是我写的一个递归二路归并排序的算法:package algorithm;public class MergeSort { // private static long sum = 0; /** * * 二路归并 * 原理:将两个有序表合并和一个有原创 2010-05-04 22:03:00 · 4247 阅读 · 3 评论