JAVA SE
文章平均质量分 71
有道李
流浪者
展开
-
设计模式学习笔记
1.简单工厂模式2.策略模式 3.单一职责原则 就一个类而言,应该仅有一个引起它变化的原因 4.开放-封闭原则 就是对软件实体(类,模块,函数等)应该可以扩展,但是不可以修改, 无论模块是多么的“封闭”,都会存在一些无法对之的封闭的变化。 既然不可能完全封闭,设计人员就必须对他设计的模块应该对哪种变化封闭做出选择。 他必须原创 2011-12-11 21:38:41 · 324 阅读 · 0 评论 -
栈,队列,并查集等算法工具实现(2)
接上篇,实现一下队列:API定义如下原创 2013-12-23 15:24:22 · 807 阅读 · 0 评论 -
栈,队列,并查集等算法工具实现(3)
接上,并查集是处理合并问题有力的工具,读者自己百度,参考 Kruskral算法寻找最小生成树中的应用并差集的实现:package lee.tools;public class UF { int[] id; int[] size; public int count;//初始化 每个元素自己是一个集合 public UF(int n){ id = new int[n]; s原创 2013-12-23 15:31:30 · 1150 阅读 · 0 评论 -
栈,队列,并查集等算法工具实现(1)
最近总有朋友问我,为什么写的算法使用的是lee.tools包下的栈和队列。 为了好玩啊,JAVA是有一套集合框架,实现了栈,队列,集合,优先队列等常用的数据结构,但为了掌握这些工具的使用,最好的方法就是自己写一套。公布一下lee.tools的代码原创 2013-12-23 10:29:18 · 1060 阅读 · 0 评论 -
主要内排序算法排序算法,平台,实现
实现一个类,产生随机数、统计排序时间package lee.sort;import java.util.Random;public class SortPlatform { int size; int arr[]; Sort sort; Random random; public SortPlatform(int length){ random = new Ra原创 2013-11-27 11:49:42 · 974 阅读 · 0 评论 -
哈夫曼树(Huffman Tree) 实现
用所有的输入节点建立一个小根堆。两次出堆,两个最小的元素, 将其合并为新的二叉树。然后入堆。直到堆中只有一个元素。改元素为Huffman树的根. 我还没用写用字符拼凑树的画面的程序。 暂时用后续遍历和层次遍历输出我们的huffman树吧。原创 2013-12-09 17:13:02 · 2106 阅读 · 0 评论 -
图上常用的算法集合
上篇 介绍了图的常用API 和实现了 图的两种方式下面完成图的常用算法图的遍历 ——》深度优先 广度优先最小生成树——》 Prim算法 Kruskral算法图的最短路径 --> Dijstra 算法 Floyd算法图的拓扑排序package lee.graph;import lee.tools.CircleQueue;import lee.tools.L原创 2013-11-27 16:52:11 · 858 阅读 · 0 评论 -
二叉树括号表示的反序列化
(1(2(4)())(3(6)()))可以表示一颗二叉树如下图:将其反序列化, 从硬盘读入导入内存。这样方便我们练习二叉树的各种算法。这次算法本书对二叉树的递归性, 栈的在括号匹配中的使用 亦是非常好的练习案例package lee.tree;import java.io.BufferedReader;import java.io.FileInputStr原创 2013-11-27 15:46:08 · 2950 阅读 · 2 评论 -
图的API及其两种实现(邻接矩阵,邻接表 )
常见的实现有 邻接矩阵法 和邻接表法。 注意图上的算法 和图本书的存储方式是无关的, 很多书都没有严格区分这一点。图上的算法 比如 最小生成树 最短路径 遍历 拓扑排序等,仅依赖与API而不是图的具体实现。后续的文章会给出图上的常用算法。原创 2013-11-27 16:27:04 · 1140 阅读 · 0 评论 -
Floyd算法求最短路径,JAVA实现
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.util.Scanner;public class TestMainIO { /** * @param args * @throws FileNotFoundException */ public static原创 2013-11-07 14:33:03 · 6224 阅读 · 0 评论 -
小根堆 JAVA实现,真正的堆排序是怎么样炼成的
真正的堆排序是啥样的? 堆又称优先队列,非常重要的数据结果。能在logn复杂度中在n中找到最大(最小)原创 2013-11-12 16:55:54 · 2271 阅读 · 1 评论 -
JAVA对象创建执行顺序实验
public class MM{static{System.out.println("这是static 模块CCC");init();}private static void init(){System.out.println("这是 init() 函数");}MM(){System.out.println("这是构造函数");}public sta原创 2012-05-29 22:45:25 · 373 阅读 · 0 评论 -
Java线程:概念与原理
Java线程:概念与原理 一、操作系统中线程和进程的概念现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可转载 2012-05-26 22:38:10 · 327 阅读 · 0 评论 -
Java线程:创建与启动
Java线程:创建与启动一、定义线程 1、扩展java.lang.Thread类。此类中有个run()方法,应该注意其用法:public void run()如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。Thread 的子类应该重写该方法。2、实现转载 2012-05-26 22:41:14 · 464 阅读 · 0 评论 -
MyLineNumberReader, a implemention of java.io.LineNumberReader
this is a demo to help understant decorator design patternsMyLineNumberReader, a implemention of java.io.LineNumberReader原创 2012-05-03 00:27:11 · 400 阅读 · 0 评论 -
对java IO BufferedWriter 使用的演示
import java.io.*;/* 对java IO BufferedWriter 使用的演示*/class BufferedDemo{ static BufferedWriter bw; static FileWriter fw; public static void main(String[] args){ try{ fw = new FileWr原创 2012-05-01 15:15:43 · 410 阅读 · 0 评论 -
拓扑排序--关键路径实现
关键路径算法 前面部分是拓扑排序算法。 为了好玩, 我在关键路径算法中用 队列替换了工作栈。getFirstPro(v);getNextPro(v, w)这一对方法很奇怪吧。getFirstPro(v);其实是有向图v节点的第一个前驱节点同理getNextPro(v, w)是v节点对相对w节点的下一个前驱节点。 Matrix实现的图还好。 邻接表实现,如果没有逆邻接表,时间复杂度对会上来。我就没有写逆邻接表。曾经认为逆邻接表没啥用。图大了还是需要空间换取时间的在Ma原创 2013-12-06 16:46:13 · 1935 阅读 · 2 评论