算法
文章平均质量分 63
cunyan
这个作者很懒,什么都没留下…
展开
-
算法1
写日志到文件public static boolean print(String filepath,String text){ File file = new File(filepath); FileWriter fw = new FileWriter(file,true); BufferWriter bw =new BufferWriter(fw); PrintWriter pw =...原创 2013-11-28 22:34:24 · 78 阅读 · 0 评论 -
哈希表的java实现
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 /** * 员工信息类 * @author Administrator * */ public class Info { pr...原创 2014-04-22 10:04:38 · 155 阅读 · 0 评论 -
二叉树的Java实现
/* * 二叉树节点 */ public class Node { //数据项 public long data; //数据项 public String sData; //左子节点 public Node leftChild; //右子节点 public Node rightChild; /** * 构造方法 * @param d...原创 2014-04-17 22:39:09 · 78 阅读 · 0 评论 -
快速排序
* 快速排序 * 一、快速排序的思想 * 快速排序通过将一个数组划分成俩个子数组,然后通过递归调用自身为每一个子数组进行快速排序来实现 * 二、如何进行划分 * 设定关键字,将比关键字小的放在一组,比关键字大的放在另一组 * 三、如何自动设定关键字 * 设置数组最右端的数据为关键字 package com.algorithm; /** * 快速排序 * 一、快速排序的思想...原创 2014-04-17 22:36:08 · 160 阅读 · 0 评论 -
希尔排序
希尔排序 *尔排序属于插入类排序,是将整个有序序列分割成若干小的子序列分别进行插入排序。 *排序过程:先取一个正整数d1<n,把所有序号相隔d1的数组元素放一组,组内进行直接插入排序;然后取d2<d1, *重复上述分组和排序操作;直至di=1,即所有记录放进一个组中排序为止。 * *希尔排序是按照不同步长对元素进行插入排序,当刚开始元素很无序的时候,步长最大,所以插入排序的元素个...原创 2014-04-16 22:15:59 · 204 阅读 · 0 评论 -
递归算法的汉诺塔问题JAVA实现
package com.algorithm; /** * 汉诺塔问题 * 所有的盘子刚开始都放在塔座A上,要求将所有的盘子从塔座A移动到塔座C,每次只能移动一个盘子,任何盘子不能放在比自己小的盘子上 * @author lenovo * */ public class HanoiTower { /** * 移动盘子 * TopN:移动的盘子数 ...原创 2014-04-16 22:15:17 · 187 阅读 · 0 评论 -
递归算法
*递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。 *递归过程一般通过函数或子过程来实现。递归方法:在函数或子过程的内部,直接或者间接地调用自己的算法。 *该数列中的第N向是第n-1项加n的到的 package com.algorithm; /** * 递归 * @author lenovo *递归算法是把问题转化为规模...原创 2014-04-16 22:12:29 · 224 阅读 · 0 评论 -
双向链表的java实现
* 一、什么是双链表 * 每个结点除了保存对下一个结点的引用,同时还保存着对前一个结点的引用 * 二、从头部进行插入 * 要对链表进行判断,如果为空则设置尾结点为新添加的结点,如果不为空,还需要设置设置头结点的前一个结点为新添加的结点 * 三、从尾部进行插入 * 如果链表为空,则直接设置头结点为新添加的结点,否则设置尾结点的后一个结点为新添加结点,同时设置新添加的结点的前一个结点的尾结点 * ...原创 2014-04-16 22:11:12 · 83 阅读 · 0 评论 -
双端链表的java实现
* 双端链表, * 一、什么是双链表 * 链表中保存着对最后一个链接点引用的链表 * 二、从头部进行插入 * 要对链表进行判断,如果为空则设置尾结点为新添加的结点 * 三、从尾部进行插入 * 如果链表为空,则直接设置头结点为新添加的结点,否则设置尾结点的后一个结点为新添加结点 * 四、从头部进行删除 * 判断头部结点是否有下一个结点,如果没有则设置结点为null package com...原创 2014-04-16 22:09:58 · 105 阅读 · 0 评论 -
链表的java实现
使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。在计算机科学中,链表作为一种基础的数据结构可以用来生成其它类型的数据结构。 链表通常由一连串节点组成,每个节点包含任意的实例数据(data fields)和一或两个...原创 2014-04-15 21:34:29 · 65 阅读 · 0 评论 -
队列的java实现
普通队列 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为...原创 2014-04-15 21:30:36 · 73 阅读 · 0 评论 -
栈的java实现
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。 栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈...原创 2014-04-15 21:27:50 · 85 阅读 · 0 评论 -
冒泡排序,选择排序,插入排序
冒泡排序 冒泡排序算法的运作如下:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较 package com.algorithm; /** * 冒泡排...原创 2014-04-15 21:24:43 · 66 阅读 · 0 评论 -
Aho-Corasick 多模式匹配算法、AC自动机详解
有时候可能需要按一个关键字词列表来过滤信息,例如过滤黄色或其他非法信息 调用indexOf方法来查找关键字集合看起来效率不高,Aho-Corasick算法可用用来在文本中搜索多个关键字,当有一个关键字集合时,想发现文本中所有出现关键词的位置,或者检查是否有关键字集合中的任何关键词出现在文本中时,可用使用Aho-Corasick算法。 Aho-Corasick算法是多模式匹配中的...原创 2014-04-07 20:57:05 · 263 阅读 · 0 评论 -
查找算法:线性查找,折半查找
线性查找 package com.search; /** * JAVA实现线性查找 * * @author lenovo * */ public class LSearch { public static int[] Data = { 12, 76, 29, 22, 15, 62, 29, 58, 35, 67, 58, 33, 28, 8...原创 2014-04-07 20:11:38 · 135 阅读 · 0 评论 -
哈希表处理冲突的开放寻址法
/* * 链结点,相当于是车厢 */ public class Node { //数据域 public Info info; //指针域 public Node next; public Node(Info info) { this.info = info; } } /* * 链表,相当于火车 */ public cla...原创 2014-04-22 10:09:42 · 631 阅读 · 0 评论