java数据结构和算法
回顾-总结-实现java基本的数据结构与算法,在此基础上更深层次的研究探讨复杂的算法,力求最终能够和海量数据处理相关算法靠拢。
ssdut_yrp
这个作者很懒,什么都没留下…
展开
-
快速排序二
public class ArrayIns { private long[] theArray; private int nElems; public ArrayIns(int max){ theArray=new long[max]; nElems=0; } public void insert(long value){原创 2016-03-15 17:05:01 · 777 阅读 · 0 评论 -
快速排序一
public class ArrayIns { private long[] theArray; private int nElems; public ArrayIns(int max){ theArray=new long[max]; nElems=0; } public void insert(long value){原创 2016-03-15 16:44:26 · 786 阅读 · 0 评论 -
划分算法
public class ArrayPar { private long[] theArray; private int nElems; public ArrayPar(int max){ theArray=new long[max]; nElems=0; } public void insert(long value){原创 2016-03-15 16:01:32 · 1405 阅读 · 0 评论 -
希尔排序
public class ArraySh { private long[] theArray; private int nElems; public ArraySh(int max){ theArray=new long[max]; nElems=0; } public void insert(long value){原创 2016-03-15 14:05:23 · 1126 阅读 · 0 评论 -
非递归实现归并排序
归并算法的中心是归并两个已经有序的数组public class MergeApp { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[] arrayA={23,47,81,95};原创 2016-03-14 11:33:33 · 1210 阅读 · 0 评论 -
汉诺塔问题
对于上面把问题抽象出来的那段描述,对于n > 1的时候,又可以抽象(换成“总结”这个词会没那么大压力吗?)出这3步: (1)、将底盘n以上的环(n-1个)移动到B (2)、将底盘n从A移动到C (3)、将B上的环(n-1个)移动到C 其中第1步和第3步的步数是一样的,因为环的数量一样(n-1个),只是目标的柱子不同而已。public class TowerApp { /**原创 2016-03-14 11:05:19 · 1118 阅读 · 0 评论 -
递归求三角数字
package cn.gwssi;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class TriangleApp { /** * @param args */ static int theNumber;原创 2016-03-14 09:58:29 · 1100 阅读 · 0 评论 -
Josephus问题
public class Link { public long lData; public Link next; public Link(long lData){ this.lData=lData; } public void displayLink(){ System.out.print(lData+" "); }}p原创 2016-03-11 15:19:07 · 757 阅读 · 0 评论 -
循环链表实现队列
public class Link { public long lData; public Link next; public Link(long lData){ this.lData=lData; } public void displayLink(){ System.out.print(lData+" "); }}pu原创 2016-03-11 14:47:28 · 1365 阅读 · 0 评论 -
循环链表
public class Link { public long lData; public Link next; public Link(long lData){ this.lData=lData; } public void displayLink(){ System.out.print(lData+" "); }}pu原创 2016-03-11 14:26:57 · 710 阅读 · 0 评论 -
二分查找、数组合并
2.4修改orderedArray.java程序(清单2.4)使insert()、delete()与find()方法一样都使用 二分查找,正如书中所建议的那样。 2.5向orderedArray.java程序(清单2.4)的OrdArray类加入一个merge()方法,使之可以将两个有序的源数组合并成一个有序的目的数组。在main()中添加代码,向两个源数组中插入随机数,调用merge()方法,原创 2016-02-25 16:18:11 · 959 阅读 · 0 评论 -
双向冒泡与奇偶冒泡
3.1 bubbleSort.java程序(清单3.1)和BubbleSort专题applet中,in索引变量都是从左到 右移动的,直到找到最大数据项并把它移动到右边的out变量外。修改bubbleSort()方法, 使它成为双向移动的。这样,in索引先像以前一样,将最大的数据项从左移到右,当它到 达out变量位置时,它掉头并把最小的数据项从右移到左。需要两个外部索引变量,一个在 右边(以前的out原创 2016-02-25 17:16:28 · 826 阅读 · 0 评论 -
双端队列
4.2 根据本章里对双端队列的讨论编写一个Deque类,它应该包括insertLeft()、insertRight()、removeLeft()、removeRight()、 isEmpty()、isFull()方法。要求像队列那样支持在数据末端的回绕。public class DuQueue { private int maxSize; private long[] queArr原创 2016-02-29 10:58:55 · 1066 阅读 · 1 评论 -
双端队列实现栈
4.3 编写一个基于上机作业4.2的Deque类的栈类。这个栈类应该与 stack.java程序(清单4.1)中的StackX类具有机同的方法和功能。public class StackY { private DuQueue stackQueue; public StackY(int size){ stackQueue = new DuQueue(size);原创 2016-02-29 15:22:11 · 980 阅读 · 0 评论 -
优先级队列
/** * 优先级队列 */public class PriorityQ { private int maxSize; private long[] queArray; private int nItems; public PriorityQ(int s){ maxSize =s; queArray=new long原创 2016-02-29 17:26:55 · 640 阅读 · 0 评论 -
队列Queue模拟排队问题
4.5 队列通用于模拟人、汽车、飞机、业务等等的流动情况。应用queue.java 程序(清单4.4)的Queue类,编写一个程序模拟超市的收款队列。可以用上机 作业4.1的display()方法,显示出顾客的几条队列。可以通过敲击一个键插入 一个新的顾客。为顾客选择在哪一个队列上。收银员为每个顾客服务的时间是 随机的(可假定为按照顾客买了多少东西而定)。一旦结完账,就从队列中删 除该顾客。为了简单原创 2016-03-01 10:15:22 · 8755 阅读 · 1 评论 -
栈应用——单词逆序
public class StackX { private int maxSize; private long[] stackArray; private int top; public StackX(int s){ maxSize=s; stackArray = new long[maxSize]; top=-1;原创 2016-03-01 14:16:33 · 769 阅读 · 0 评论 -
栈应用——分隔符匹配
public class StackX { private int maxSize; private long[] stackArray; private int top; public StackX(int s){ maxSize=s; stackArray = new long[maxSize]; top=-1;原创 2016-03-03 10:53:43 · 538 阅读 · 0 评论 -
单链表
public class Link { public int iData;//data public double dData;//data public Link next;//reference to next Link public Link(int iData,double dData){ this.iData=iData; th原创 2016-03-03 14:47:01 · 532 阅读 · 0 评论 -
双端链表
public class Link { public long lData; public Link next;//reference to next Link public Link(long lData){ this.lData=lData; } public void displayLink1(){ System.out.原创 2016-03-03 15:03:55 · 512 阅读 · 0 评论 -
用链表实现栈
public class Link { public long lData; public Link next;//reference to next Link public Link(long lData){ this.lData=lData; } public void displayLink(){ System.out.pr原创 2016-03-03 15:50:08 · 606 阅读 · 0 评论 -
链表实现队列
public class Link { public long lData; public Link next;//reference to next Link public Link(long lData){ this.lData=lData; } public void displayLink(){ System.out.pr原创 2016-03-03 16:07:18 · 574 阅读 · 0 评论 -
有序链表
public class Link { public long lData; public Link next;//reference to next Link public Link(long lData){ this.lData=lData; } public void displayLink(){ System.out.pr原创 2016-03-03 17:31:51 · 611 阅读 · 0 评论 -
双向链表
public class Link { public long dData; public Link next; public Link previous; public Link(long dData){ this.dData=dData; } public void displayLink(){ System.out.p原创 2016-03-10 15:43:10 · 571 阅读 · 0 评论 -
数组利用有序链表排序
public class Link { public long lData; public Link next;//reference to next Link public Link(long lData){ this.lData=lData; }}public class SortedList { private Link first;原创 2016-03-10 11:44:21 · 811 阅读 · 0 评论 -
基于有序链表的优先级队例
public class Link { public long lData; public Link next;//reference to next Link public Link(long lData){ this.lData=lData; } public void displayLink(){ System.out.pr原创 2016-03-10 16:12:54 · 808 阅读 · 0 评论 -
基于双向链表的双端队列
public class Link { public long dData; public Link next; public Link previous; public Link(long dData){ this.dData=dData; } public void displayLink(){ System.out.p原创 2016-03-10 16:32:07 · 991 阅读 · 0 评论