算法
cjf068
这个作者很懒,什么都没留下…
展开
-
布隆过滤器
[code="java"]package org.jf.alg;import java.util.BitSet;/** * * * * @author chenjf * */public class BloomFilter { private BitSet bit_array ; private final int MAX_S...2012-04-23 15:39:05 · 142 阅读 · 0 评论 -
基本的排序算法
插入排序选择排序快速排序。。。。后续补充[code="java"]package org.jf.alg.sort;/** * * 数组排序工具类 * * 数组中不能有空元素 * * @author junfeng.chen * */public class Sorter { /** * * 选择...2012-04-21 21:07:31 · 130 阅读 · 0 评论 -
判断数组中是否存在两个元素之和等于给定数值
已知int数组a按升序排列,要求用线性时间复杂的算法,判断是否存在一个数n等于数组中某两个元素之和。线性算法:取两个数组下标,一个为起始下标,一个为末尾下标,分别即为low和high(以下代码假设数组尚未排序)[code="java"]/** * 判断是否存在两个元素之和与给定数相等 * @param a * @param n * @return */...2012-04-06 22:58:11 · 1218 阅读 · 0 评论 -
求最大子数组之和
求最大子数组之和的线性解法:本算法受编程珠玑中提示而得[code="java"]/** * 线性时间复杂度求最大和子数组 * @param a 源数组 * @return 结果数组 长度为3的数组 分别为元素起始位置 结束位置 总和 */ public static int[] getMaxSumSubArray(int a[]) { int begi...2012-04-06 22:51:50 · 145 阅读 · 0 评论 -
LRUCache
MyLRUCache 缓存类[code="java"]package org.jf.alg.lru;import java.util.Collections;import java.util.HashMap;import java.util.LinkedList;import java.util.List;import java.util.Map;/**...2012-03-15 14:35:07 · 151 阅读 · 0 评论 -
求变位词组合
[code="java"]public class CharComp { /** * * 1.给单词排序 * 2.给排序后的单词设定标识符 * 3.通过标识符在map中查找对应的list,并将其追加其中(未排序的单词) * */ public static Map getGroupWords(String [] words) {...2012-03-13 22:53:17 · 106 阅读 · 0 评论 -
计算24点
[code="java"][/code]计算n个数的全排列[code="java"]package org.jf.alg.stack;import java.util.List;import java.util.ArrayList;public class PermUtil { /** * @param args */ public static...2012-03-13 21:49:03 · 153 阅读 · 0 评论 -
表达式计算
中缀表达式转后缀后缀表达式计算支持整型 分数计算,只支持 + - * /[code="java"]package org.jf.alg.stack;import java.util.List;import java.util.ArrayList;import java.util.Stack;public class OperationUtil {...2012-03-10 23:02:41 · 122 阅读 · 0 评论 -
Many2One缓冲
多线程并发操作中,为了尽量减少同步锁的开销,一般都会尽可能减少同步操作。以下是一个多线程写入,写入操作需要同步,读取操作需要部分同步;读取操作的同步发生在缓冲区交换的时候。以下是简单的java实现[code="java"]package org.jf;import java.io.BufferedWriter;import java.io.FileWriter;impo...原创 2012-03-06 12:35:29 · 110 阅读 · 0 评论 -
红黑树
[code="java"][/code]红黑树 规则 * 1.每个节点不是红色就是黑色 * 2.根总是黑色 * 3.如果节点是红色,则它的两个子节点必须是黑色(反之则不一定) * 4.从根到叶节点或空子节点的每条路径,必须包括相同数目的黑节点(空节点为黑色)节点类:[code="java"]package org.jf.alg.tree;public c...2012-03-03 21:47:29 · 123 阅读 · 0 评论 -
行文件分组统计
[code="java"][/code]有些情况下,对于一个结构化的以行为记录的文本文件,需要按列分组统计,如果数据量小,可以直接导入数据库中,但是当文件很大时,导入数据库不太现实,本程序即实现非数据库条件下,按任意列分组统计行数功能;文件只读一次,按任意分组方式查询。基本思路:1.根据指定的列名,构建一颗多叉树,树的高度即为可以分组的条件列数2.存储树中,各节点名按字典顺序降序排列...2012-03-02 22:57:07 · 115 阅读 · 0 评论 -
简单LRU缓存实现
链表保存键值,由于没有权值策略,简单的将当前访问过的节点放到链表头部,则存在如下问题:在周期性访问中,某个周期中存在一部分数据仅仅只访问了一次,则最终导致缓存中的数据都是无效的数据,而将频繁访问的数据排除了。在实际应用中,这种简单策略不适用。TestCode[code="java"]public class LRUCacheTest { /** * @pa...2012-02-09 21:12:03 · 118 阅读 · 0 评论 -
大根堆
大根堆,可用于优先级队列[code="java"]package org.jf.alg;/** * 大根堆 * * @author junfeng.chen * * @param */public class BigHeadBinaryHeap { private int step = 64; private Object [] arra...原创 2012-02-08 22:23:41 · 102 阅读 · 0 评论 -
固定容量二叉堆
固定容量的二叉堆实现,可用于快速求top k 问题。如要求一个数组中top k的元素,则建立一个容量为k的大根堆,一次遍历数组add进该堆,遍历完毕,堆中的元素即为top k的所有元素。固定容量大根堆代码[code="java"]package org.jf.alg;public class BigHeadFixedBinHeap { private Object ...原创 2012-02-08 17:26:49 · 231 阅读 · 0 评论 -
大数乘法
论坛看到的一个面试题,实现任意大整数字符串相乘,返回结果字符串[code="java"]package org.jf.alg;/** * * 大数乘法 * @author junfeng.chen * */ public class BigIntegerMultipl { /** * ...2012-02-07 00:16:10 · 78 阅读 · 0 评论 -
中文数字到阿拉伯数字转换
昨天博客上看到一童鞋面试微软的题目:将中文数字转换成阿拉伯数字表示:如 五千零一-->5001 五千一 5100[code="java"]package org.jf.alg;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.M...2012-04-24 10:18:40 · 333 阅读 · 0 评论 -
日期计算
简单日期计算类:日期大小比较日期之间天数计算[code="java"]package org.jf.alg;/** * * @author junfeng.chen * */public class Date { private int year; private int month; private int day; p...2012-04-19 23:04:07 · 145 阅读 · 0 评论