数据结构 算法
正在路上93
这个作者很懒,什么都没留下…
展开
-
栈的简单实现
/** * 栈的简单实现 * @author xxxu * */ public class Stack { //栈的结点的个数 private int N=0; //头结点 private Node first; //定义一个节点 private class Node{ int item; Node next; } //判断栈是否为空 public bool原创 2016-02-19 10:18:15 · 215 阅读 · 0 评论 -
低位优先的字符串排序
/** * 低位优先的字符串排序(字符串都是定长的) * @author xxxu * */ public class LSD { /** * @param a 字符串数组 * @param W 字符串长度 */ public void sort(String[] a,int W){ //通过前W个字符将a[]排序 int N=a.length; int R=2原创 2016-02-22 14:38:10 · 333 阅读 · 0 评论 -
KMP字符串查找算法
/** * KMP字符串查找算法 * @author xxxu * */ public class KMP { private String pat; private int[][] dfa; //KMP的核心 public KMP(String pat){ this.pat=pat; int M=pat.length(); int R=65536;//Unicode码值原创 2016-02-22 14:34:01 · 290 阅读 · 0 评论 -
暴力字符串查找
/** * 暴力字符串匹配 * @author xxxu * */ public class ViolenceMatch { /** * 在txt中匹配pat * @param pat * @param txt * @return */ public int match(String pat,String txt){ int M=pat.length(); //原创 2016-02-22 14:25:00 · 238 阅读 · 0 评论 -
广度优先搜索
import java.util.LinkedList; /** * 广度优先搜索(请先看图那篇博客) * 广度优先搜索的定义请自己百度,这里不费多话,直接上代码 * @author xxxu * */ public class BreadthFirstPaths { private boolean[] marked; //到达该顶点的最短路径已知吗? private int[]原创 2016-02-20 23:42:30 · 270 阅读 · 0 评论 -
深度优先搜索
/** * 深度优先搜索(请先看图那篇博客) * 深度优先搜索的定义请自己百度,这里不费多话,直接上代码 * @author xxxu * */ public class DepthFirstPaths { private boolean[] marked; //这个顶点上调用过dfs了吗? private int[] edgeTo; //从起点到一个顶点的已知路径上的最后一原创 2016-02-20 23:36:11 · 241 阅读 · 0 评论 -
用邻接表实现无向图
import java.util.LinkedList; /** * 用邻接表(其实就是前面博客实现的哈希表)实现无向图 * @author xxxu * */ public class Graph { private final int V;//顶点数目 private int E; //边的数目 private LinkedList[] adj; //邻接表(其实就是前面原创 2016-02-20 23:32:14 · 1247 阅读 · 0 评论 -
二叉查找树
import java.util.LinkedList; /** * 二叉查找树的实现,每个方法都有一个私有的方法 * @author xxxu * */ public class BST { private Node root=null; private class Node{ private Integer key; //键 private String val;原创 2016-02-19 23:31:58 · 222 阅读 · 0 评论 -
利用数组和链表实现简单的哈希表
/** * 利用数组和链表实现简单的哈希表 * @author xxxu * */ public class HashTable { //哈希表的大小 private int m=0; //链表数组 private SSST[] sssts=null; /** * 默认分配的大小 */ public HashTable(){ this(13); } /**原创 2016-02-19 19:11:44 · 1144 阅读 · 0 评论 -
链表实现查找
/** * 链表实现查找 * @author xxxu * */ public class SSST { //链表的头结点 private Node first=null; private class Node{ Integer key; //键 String val; //值 Node next; //下个节点地址 public Node(Integer ke原创 2016-02-19 19:09:32 · 1385 阅读 · 0 评论 -
基于数组的最大优先队列
/** * 用数组实现最大优先队列,根节点是最大的元素,左右孩子不大于根节点 * 注意这并不是二叉查找树,只是优先队列,最重要是操作就是删除最大的元素和插入元素 * 节点是k,那么父节点是(k/2),左孩子是(2k),右孩子是(2k+1) * @author xxxu * */ public class MaxPQ { private int[] pq=null;//基于堆的完全二叉原创 2016-02-19 15:17:01 · 288 阅读 · 0 评论 -
堆排序
/** * 堆排序,基于优先队列的下沉操作 * @author xxxu * */ public class HeapSort { /* * 数组a[0]不参加排序,k和数组索引一一对应了 */ public void sort(int[] a){ int N=a.length-1; /* * k=N/2; 2k 和 2k+1 就能顾及到所有的元素 * 在下原创 2016-02-19 15:18:42 · 269 阅读 · 0 评论 -
插入排序
public class InsertionSort { //比较两个数大小 private boolean less(int a,int b){ if(a return true; }else{ return false; } } //交换两个数的位置 private void exch(int[] a,int i,int j){ int t=a[i]; a[i]=a[j原创 2016-02-18 21:09:06 · 198 阅读 · 0 评论 -
希尔排序
/** * 本质还是插入排序,就多了一个增长因子的概念 * @author xxxu * */ public class ShellSort { //增长因子可以变 private static final int GAP=3; private boolean less(int a,int b){ if(a return true; }else{ return fa原创 2016-02-18 21:17:26 · 206 阅读 · 0 评论 -
快速排序
/** * 快速排序 * @author xxxu * */ public class QuickSort { private void exch(int[] a,int i,int j){ int t=a[i]; a[i]=a[j]; a[j]=t; } private int partition(int[] a,int lo,int hi){ int x=a[h原创 2016-02-18 22:48:29 · 187 阅读 · 0 评论 -
队列的简单实现
/** * 队列的简单实现 * @author xxxu * */ public class Quene { //头结点 private Node first; //尾结点 private Node last; //队列结点个数 private int N=0; private class Node{ int item; Node next; } //队原创 2016-02-19 10:26:06 · 498 阅读 · 0 评论 -
用栈解决括号配对问题
// 括号配对问题.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "iostream.h" #include "stdlib.h" #include "string.h" typedef struct node{ //声明节点 cha原创 2014-10-25 19:01:03 · 427 阅读 · 0 评论