
数据结构和算法
文章平均质量分 77
zh_coder
代码Copy员
展开
-
kmp算法
如有一串字符"a b c d " 我想知道里面是否包含字符 c d 用传统的暴力算法 我们可以这样解:java代码:public static int char_next(char [] str, char str_s[]){ int i=0; //主串下标 int j=0; //子串下标 while(str[i] { if(str[i+j]==str_原创 2015-10-25 19:06:05 · 320 阅读 · 0 评论 -
算法时间度分析
一 、时间复杂度 算法复杂度分为时间复杂度和空间复杂度。其作用: 时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小。任何算法运行所需要的时间几乎总是取决于他所处理的数据量,在这里我们主要说时间复杂度。对于一个给定计算机的算法程序,我们能画出运行时间的函数图。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。转载 2015-11-03 23:14:59 · 1427 阅读 · 0 评论 -
深搜文件夹中的最大文件
上次看到一题目,给出一个文件夹 文件夹名为root, 要求找到文件夹里面最大的文件。第一个反应递归深搜一层层往下找, 下面给出java代码.public static void main(String[]args){ File file = new File("E://root");System.out.println(getMaxFile(file.lsitFiles,0L))原创 2016-05-07 23:41:40 · 363 阅读 · 0 评论 -
2个队列实现一个栈
在算法导论有一道非常有趣的证明题, 利用2个队列实现一个栈, 队列和栈最大的区别就是队列满足FIFO(先进先出),他有2个操作的地方,一个是队头一个是队尾,而栈满足的是先进后出,他只有一个操作的地方就是栈顶。我们定义2个队列queue1 queue2 用于存放进"栈" 用queue2临时存放queue1的数据。那么实现他的方式就比较明显了, 首先我原创 2016-05-19 00:47:11 · 516 阅读 · 0 评论 -
快速排序——java实现
快速排序是一种常用且比较复杂的排序算法,最坏的情况下运行时间为O(n2) , 期望的运行时间为O(nlgn). 快速排序采用分治思想,分治过程分为三个步骤。(ps:以下思想参考导论)分解: 数组A[p...r] 被划分成2个子数组。 子数组A[p..q-1](ps:可以把它想象成数组中的前半部分 )和A[p...r](ps:可以把它想象成后半部分)。使得A[p....q-1]中的每个元素都原创 2015-11-03 21:43:20 · 375 阅读 · 0 评论 -
使用jdk1.8去除逻辑上重复的HashMap的value以及构建本地缓
最近在做一个老系统,由于表的信息不明确, 在数据库拿二个表的时候产生了笛卡尔联结,由于重复数据只有三条. 而这二个表的列数据比较固定. 所以决定取出来在后端去重。 数据类型是以List 进行接收的。 而接收后一个字段的HashMap数据是重复的。 现在我把它合并成一条HashMap(然而后来我们没有采用这种方式, 只是记录下来突然齐来的想法 ~). 测试代码如下: import jav原创 2017-03-23 20:06:32 · 2832 阅读 · 0 评论