04 2014 档案
摘要:树集合了数组(查找速度快)和链表(插入、删除速度快)的优点二叉树是一种特殊的树,即:树中的每个节点最多只能有两个子节点二叉搜索树是一种特殊的二叉树,即:节点的左子节点的值都小于这个节点的值,节点的右子节点的值都大于等于这个节点的值节点类:public class Node { public int id; public String name; public Node leftChild; public Node rightChild; public Node(int id, String name) { this.id = id; this.name = name; }}实现类(如果树中..
阅读全文
摘要:JDK版本:1.5.0_22Eclipse版本:Helios Service Release 2(3.6.2)WSDL文件的创建过程见http://blog.csdn.net/a19881029/article/details/24625429创建一个名字为math的Java web工程,并将WSDL文件拷入该工程中将Axis所需的jar包拷贝至WebRoot\WEB-INF\lib目录下,这些jar包会自动导入math工程中一,生成Web Service服务端选中MathImpl.wsdl文件右键->Web Services->Generate Java BeanSkeleton
阅读全文
摘要:JDK版本:1.5.0_22Eclipse版本:Helios Service Release 2(3.6.2)首先创建一个web工程,创建过程如下:如果选择Apache Tomcat v5.5,Dynamic web module version最高只能选择2.4,填写完成后点击“下一步”:填写默认输出文件夹,填写完成后点击“下一步”:填写根目录,填写完成后点击“完成”:工程创建完成后,编写服务接口:package com.sean.ws;public interface MathIntf { public int plus(int a, int b);}然后编写服务接口实现类:package
阅读全文
摘要:就像归并之于归并排序,划分是快速排序的核心划分数据即将数据项分为两组,使全部值小于特定值的数据项在一组,使全部值大于特定值的数据项在另一组划分算法由两个指针开始,两个指针分别指向数组2端,相向移动,当左侧指针遇到大于特定值的数据项时,停止移动,当右侧指针遇到小于特定值的数据项时,停止移动,此时交换两个指针所指数据项的值,交换完成后,两个指针再次相向移动,直到两个指针之间没有其它数据项或两个指针之间只有一个数据项public class Partition { private int[] data; public Partition(int[] data){ this.data = data..
阅读全文
摘要:程序基本流程如下:代码组织结构如下:HTTP重定向服务主线程:package com.server;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import org.apache.log4j.Logger;import com.conf.Config;public class HttpServer implements
阅读全文
摘要:希尔排序是一种基于插入排序(参见http://blog.csdn.net/a19881029/article/details/21624081)的排序算法插入排序的问题是,如果一个极小的数据处于数组的右端,那么在数组排序过程中,每个数据项平均需要移动N/2次,所有数据大约需要移动N*N/2次,时间复杂度为O(N*N),也就是说在排序过程中,数据项需要移动的次数过多,严重降低了排序的效率如何降低排序过程中数据项的移动次数呢?如果原始数组是一个基本有序的数据,那么平均每个数据项只需移动1次,或不需要移动,所有数据大约只需移动N次,时间复杂度将变为O(N)所以提高插入排序效率的关键就在于如何将原始数
阅读全文
摘要:归并算法的中心是归并2个已经有序的数组,归并2个有序数组A和B,就生成了一个新的数组C,数组C中包含数组A和B中的所有数据项,并使它们有序的排列在数组C中不要求数组A和B的长度相同比较数组A和数组B中的数据项并将较小项首先移动至数组C中public class Merge { private int[] A = {2,6,7}; private int[] B = {1,3,4,5,8,9,10}; private int[] C = new int[10]; public void sort(){ int a = 0; int b = 0; int c = 0; while(a <..
阅读全文
摘要:分治算法:把一个大问题分解为两个相对较小的问题,分别解决每一个小问题,对两个小问题的处理方式也一样:分解为两个更小的问题,并解决它们这个过程一直持续下去直到达到易于求解的基值情况,就不用继续分解下去了二分查找是分治算法的一个实例循环二分查找public class BinarySearch { private int[] data; public BinarySearch(int[] data){ this.data = data; } public int search(int target){ int min = 0; int max = data.length - 1; in...
阅读全文
摘要:对一个包含n个字母的单词进行全排列:1,对该单词右边n-1个字母进行全排列2,轮换所有字母(所有字母左移一位,最左边的字母移动至最右边)3,以上步骤重复n次(以保证该单词的所有字母都曾经处于第一位)public class FullPermutation { private char[] chars; private int length; public FullPermutation(String str){ chars = str.toCharArray(); length = chars.length; } public void permutation(int num){ i...
阅读全文
摘要:public class DoublyLinkList { private class Data{ private Object obj; private Data left = null; private Data right = null; Data(Object obj){ this.obj = obj; } } private Data first = null; private Data last = null; public void insertFirst(Object obj){ Data data = new Data(obj); if(first ...
阅读全文