![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构算法
文章平均质量分 69
数据结构算法
leichenlei
这个作者很懒,什么都没留下…
展开
-
获得数组全部排列组合
出处:http://blog.csdn.net/justinavril/article/details/4181354 public class AllSort{ public static void main(String[] args) { char buf[]={'a','b','c'}; perm(原创 2017-07-20 15:18:20 · 3598 阅读 · 0 评论 -
模式匹配(indexOf)
简单串模式匹配算法 package com.test;public class Test { /** * 一个普通的模式匹配算法 * @param str 主串 * @param sub 模式串 * @param pos 位置 * @return 模式串的匹配的首个开始位置 */ public static int indexOf1(原创 2017-07-20 15:15:23 · 375 阅读 · 0 评论 -
模式匹配 KMP
上代码:next道理懂了,运行过程还是没琢磨明白。第二个next是优化的算法,还没看懂。 package com.test;public class Test { /** * kmp算法,主串指针不回溯的一种算法。时间复杂度可以达到O(n+m)nm是串长度 * 关键是要解决:当匹配到模式串的某个字符,发生不匹配之后;主串指针如何向右移动。(next就是解原创 2017-07-20 15:15:34 · 128 阅读 · 0 评论 -
栈实现进制转换
上代码/** * 把非负的十进制数转换成 十一下进制的数 * @param num 十进制数 * @param hex 进制 * @return 结果 */ public static String decimalConvert(int num, int hex){ if(num 10){ return null; } if(num原创 2017-07-20 15:15:46 · 578 阅读 · 0 评论 -
栈实现HTML和UBB的转换
之前做论坛的时候曾经傻b呵呵的用环视正则做的,原来栈就可以啊。这个例子不实现细节,也不完成什么功能,只是说明栈可以处理前后匹配,上代码。package com.test;import java.util.Stack;public class Test { class Node { int start; int end; String tagName原创 2017-07-20 15:15:55 · 691 阅读 · 0 评论 -
二叉树的遍历
用递归和非递归的方法遍历二叉树.先建立一个二叉树:代码如下: static class Node { Node left; Node right; String value; public Node(String value, Node left, Node right){ this.value = value; this.left原创 2017-07-20 15:16:05 · 145 阅读 · 0 评论 -
排序(1)简单排序
冒泡排序 public static int[] data = {3,7,8,0,9,5,4,1,6,2}; public static void main(String[] args) { int len = data.length; System.out.println(Arrays.toString(data)); for(int i = 0; i < le原创 2017-07-20 15:17:31 · 166 阅读 · 0 评论 -
简单的表达式、公式解析器
最近在做新项目,需要计算预先配置的表达式的结果。表达式特点:1,浮点类型2,代变量参数3,只限于简单计算符号表达式类似于:"3*(4+a)/6"程序:import java.util.ArrayList;import java.util.HashMap;import java.util.LinkedList;import java.util.List;i原创 2017-07-20 15:17:38 · 1533 阅读 · 0 评论 -
排序(3)希尔(Donald L. Shell)排序
最近学到希尔排序,感觉理解非常费劲。下面是自己总结的希尔排序,希望自己以后不要忘了。嘿嘿。希尔排序其实是高级插入排序,所以学习希尔排序之前需要了解插入排序。 一、希尔排序过程:1,首先根据公式h = h*3 + 1,递归求出h的值;即让h=1,一直递归到h 例如:长度是10的数组,h = 4。2,公式递减地进行插入排序for(按公式递减间隔){//开始插入排序过程原创 2017-07-20 15:17:52 · 259 阅读 · 0 评论 -
排序(2)归并排序(递归、合并排序)
用到递归、合并,所以叫归并。public static int[] data = {3,7,8,0,9,5,4,1,6,2}; /** * 递归 * @param temp 临时数组 * @param sIndex 开始索引 * @param eIndex 结束索引 */ private static void recursion(int[] temp,原创 2017-07-20 15:17:45 · 275 阅读 · 0 评论 -
排序(4)快速排序
快速排序的原理就是以递归的方式进行划分 划分:从数组中选择一个数作为枢纽,将数组划分成两部分,一部分小于枢纽,一部分大于枢纽 这里列举三种快速排序,第一种是基本的快速排序。第二种优化枢纽选择方式,第三种优化长度较小数组的排序为插入排序。 一、选择最右为中枢的快速排序步骤:1,选择最右一个为枢纽。2,划分整个数组。数组变成:[比枢纽小,...,枢纽,比枢纽大,..原创 2017-07-20 15:18:00 · 159 阅读 · 0 评论 -
排序(5)基数排序
基数排序是根据个位、十位......排序的方式,最好可达O(n)。本例通过余数获得位上数字的方法效率太低。 public static int[] data = {3,7,8,0,9,5,4,1,6,2}; public static void sort(int[] number, int d) { int k=0; int n=1; int m=1;//控制键值原创 2017-07-20 15:18:07 · 177 阅读 · 0 评论 -
Trie字典树、数字查找、键树
1,需要先将要被查找的文字通过structure方法按照拼音构建成一棵树,每个匹配节点上装有查找目标对象。 2,完成的功能:用户在输入框里输入拼音或者汉字,输入内容转化成拼音,然后按照拼音遍历树,找到结果。 3,用到了开元包pinyin4j 4,没有考虑多音字。可以按需要对多音字做多路径存储。子节点可以优化成map结构,优化遍历速度。 package com.tes原创 2017-07-20 15:15:11 · 517 阅读 · 0 评论