
算法
treeroot
爱好围棋,热爱生活
展开
-
质疑String的匹配算法
String类提供了查找子串的方法,包括 indexOf(String str) ,indexOf(String str,int fromIndex),lastIndexOf(String str),lastIndexOf(String str,int fromIndex)。 我很奇怪为什么使用的是效率低下的普通算法,而没有使用高效的KMP算法,我记得学数据结构的时候原创 2004-09-22 21:04:00 · 2103 阅读 · 5 评论 -
堆结构的实现
包括最大值堆和最小值堆:接口:package org.rut.util.structure.heap;/** * @author treeroot * @since 2006-1-31 * @version 1.0 */public interface Heap { /** * return the top element of the heap * @retur原创 2006-03-21 18:27:00 · 6059 阅读 · 0 评论 -
各种排序算法java实现
插入排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/** * @author treeroot * @since 2006-2-2 * @version 1.0 */public class InsertSort implements SortUtil.Sort{原创 2006-03-21 18:21:00 · 7721 阅读 · 2 评论 -
平衡二分堆的使用
java.util.Timer是一个用来调度后台任务的类,TimerTask就是一个任务。里面用了一个平衡二分堆的算法:/** * This class represents a timer task queue: a priority queue of TimerTasks, * ordered on nextExecutionTime. Each Timer object has one o原创 2005-01-08 19:39:00 · 4053 阅读 · 0 评论 -
一个相当不错的地区代码级联实现
我不想多说什么,只想把这个提供给大家也给自己,客户端级连菜单如果数据量很大你必须考虑效率问题!! 这里不支持JavaScript,把下面的代码放在一个文件,存为htm就行了。function ListBoxItem(value, label, depend){ this.value = value; this.label = label; //下面这个在这里无用! th原创 2004-12-28 19:05:00 · 11068 阅读 · 0 评论 -
开源:对象运行时大小参考实现(sizeof)
支持递归引用,唯一不支持的就是不等长数组,不过要支持这个也不难,两个原因不改进它:1.大部分数组都是等长的。2.这个东西实在没看出有什么实际应用,这个是主要原因。需要读者对反射和数组有比较深的认识:package treeroot.util;import java.lang.reflect.*;import java.util.*;/** * Compute the size of a R原创 2004-12-29 08:37:00 · 3372 阅读 · 0 评论 -
13球称重问题Java实现
/** * 13球称重问题Java实现 * Copyright: Copyright (c) 2004 * @author treerot * @version 1.0 */public class ThirteenBall { private static class Ball { private int weight; public int getWeight() {原创 2004-11-02 18:11:00 · 2082 阅读 · 0 评论 -
算法分析
写程序归根到底就是做两件事:算法实现和错误处理.这里列举一些常用的算法并给以简单的分析,希望能有一定的参考价值.1.判断一个正整数是否事2的幂C实现:int is2Power(unsigned int x){ return (x &(x-1))==0;} Java实现:boolean is2Power(int x){ return (x &(x-1))==0;}两者实现并没有多原创 2004-10-20 14:03:00 · 2170 阅读 · 0 评论 -
一个最优的算法
问题:对一个正整数n,求一个不大于n而且是2的指数的最大整数.int floor(int n){ n=n | n>>1; n=n | n>>2; n=n | n>>4; n=n | n>>8; n=n | n>>16; return n-(n>>1);}真的是我发现的最高效的程序了,只要12条指令.另外对这个问题的一般都会这样m=1;while(mreturn原创 2004-10-19 13:54:00 · 2221 阅读 · 6 评论 -
红黑树算法
http://dev.youkuaiyun.com/develop/article/19/19794.shtm原创 2004-10-15 22:18:00 · 5038 阅读 · 3 评论 -
k方和的使用
有这样一个问题:for(int i=0;i for(int j=0;j for(int k=0;k ;执行的次数,当然通过程序可以计算出来,不过计算出来的数字是毫无意义的,因为n改变了又得重新计算.下面根据k方和公司给出一个方法,即使是4次循环或者5次循环都可以计算.这里设定 f(n,k) 表示 n的k次方法和(∑i^k) ,通过计算得出f(n,1)=1+2+原创 2006-03-23 15:02:00 · 4711 阅读 · 0 评论