随笔分类 -  数据结构/算法

摘要:http://www.cppblog.com/reiks/archive/2009/08/28/94629.aspx/*RMQ(RangeMinimum/MaximumQuery)问题:RMQ问题是求给定区间中的最值问题。当然,最简单的算法是O(n)的,但是对于查询次数很多(设置多大100万次),O(n)的算法效率不够。可以用线段树将算法优化到O(logn)(在线段树中保存线段的最值)。不过,Sparse_Table算法才是最好的:它可以在O(nlogn)的预处理以后实现O(1)的查询效率。下面把SparseTable算法分成预处理和查询两部分来说明(以求最小值为例)。预处理:预处理使用DP的 阅读全文
posted @ 2012-10-15 22:51 董雨 阅读(282) 评论(0) 推荐(0)
摘要:http://tieba.baidu.com/f?kz=754580296转自 FHNstephen的空间 后缀数组是处理字符串的有力工具。后缀数组是后缀树的一个非常精巧的替代品,它比后缀树容易编程实现,能够实现后缀树的很多功能而时间复杂度也并不逊色,而且它比后缀树所占用的内存空间小很多。可以说,后缀数组比后缀树要更为实用。自从拜读了罗穗骞大牛的WC2009论文《后缀数组——处理字符串的有力工具》后,经过若干星期的努力(中间有因某些原因而缓下来),终于把论文上面的练习题全部完成了,现在写写自己对后缀数组的理解和感悟。在看本笔记时,请不要忘记了,这是笔记,而教材是《后缀数组——处理字符串的有力工 阅读全文
posted @ 2012-10-15 11:57 董雨 阅读(682) 评论(0) 推荐(0)
摘要:http://www.byvoid.com/blog/lcs-suffix-array/http://www.cppblog.com/superKiki/archive/2010/10/29/131781.aspx?opt=admin[最长公共子串]最长公共子串(Longest Common Substring ,简称LCS)问题,是指求给定的一组字符串长度最大的共有的子串的问题。例如字符串”abcb”,”bca”,”acbc”的LCS就是”bc”。求多串的LCS,显然穷举法是极端低效的算法。改进一些的算法是用一个串的每个后缀对其他所有串进行部分匹配,用KMP算法,时间复杂度为O(N*L^2) 阅读全文
posted @ 2012-10-15 11:46 董雨 阅读(677) 评论(0) 推荐(0)
摘要:http://churuimin425.blog.163.com/blog/static/34129877201141005542104/先转一个后缀数组的简单总结:后缀数组就是将字符串所有后缀排序后的数组,设字符串为S,令后缀Suffix(i)表示S[i..len(S)]。用两个数组记录所有后缀的排序结果:· Rank[i]记录Suffix(i)排序后的序号,即Suffix[i]在所有后缀中是第Rank[i]小的后缀· SA[i]记录第i位后缀的首字母位置,即Suffix[SA[i]]在所有后缀中是第i小的后缀然后就是怎么快速求所有后缀的顺序了,其中的关键是如何减少两个后 阅读全文
posted @ 2012-10-15 11:42 董雨 阅读(408) 评论(0) 推荐(0)
摘要:http://chencb.ycool.com/post.1901840.html今天把后缀数组给看了下,评价就一句话:很好,很强大懒得写废话,直接把相关重点简单记录一下:后缀数组就是将字符串所有后缀排序后的数组,设字符串为S,令后缀Suffix(i)表示S[i..len(S)]。用两个数组记录所有后缀的排序结果:Rank[i]记录Suffix(i)排序后的序号,即Suffix[i]在所有后缀中是第Rank[i]小的后缀 SA[i]记录第i位后缀的首字母位置,即Suffix[SA[i]]在所有后缀中是第i小的后缀 然后就是怎么快速求所有后缀的顺序了,其中的关键是如何减少两个后缀比较的复杂度方法 阅读全文
posted @ 2012-10-15 11:41 董雨 阅读(3869) 评论(3) 推荐(5)
摘要:http://www.cnblogs.com/cutepig/archive/2009/08/03/1538011.html文件压缩/解压算法7zip7z has open architecture, so it can support any new compression methods. Now the following methods are integrated to 7z:MethodDescriptionLZMAImproved and optimized version of LZ77 algorithmPPMDDmitry Shkarin's PPMdH with 阅读全文
posted @ 2012-10-01 11:09 董雨 阅读(884) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/jackdong/admin/EditPosts.aspx?opt=1最近项目中要用到内存数据压缩(客户端将数据在内存中压缩后,传输到服务器,服务器解压,反序列化,存入数据库)。自然想到了zlib和lzma sdk。简介在计算机科学和信息论中,数据压缩或者源编码是按照特定的编码机制用比未经编码少的数据位元(或者其它信息相关的单位)表示信息的过程。数据压缩能够实现是因为多数现实世界的数据都有统计冗余。压缩算法分类http://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E5%8E%8B%E7%BC%A9有损压缩h 阅读全文
posted @ 2012-10-01 11:08 董雨 阅读(529) 评论(0) 推荐(0)
摘要:“算法” - 程序的灵魂! 这两天碰到一个需要处理排序的场景! 我第一印象想到的是"冒泡排序",由于效率不是特别友好基本上弃用,后来选择了有广大好评的快速排序方式,Google了一下,很多朋友都提出了自己的解 决方案,大致实现思路都是一样的!我也改写了一份C#的:static ArrayList QuickSort(ArrayList arrayList) {if (arrayList.Count <=1) return arrayList;int pivotIndex = arrayList.Count /2;int pivot = (int)arrayList[p 阅读全文
posted @ 2012-01-06 15:19 董雨 阅读(280) 评论(0) 推荐(0)
摘要:1、反转一个链表。循环算法。 1 List reverse(List l) { 2 if(!l) return l; 3 list cur = l.next; 4 list pre = l; 5 list tmp; 6 pre.next = null; 7 while ( cur ) { 8 tmp = cur; 9 cur = cur.next; 10 tmp.next = pre 11 pre = tmp;... 阅读全文
posted @ 2012-01-06 15:18 董雨 阅读(216) 评论(0) 推荐(0)
摘要:任意分布的随机数的产生方法—VC程序实现方法下载源代码 摘要: 随机数在实际运用中非常之多,如游戏设计,信号处理,通常我们很容易得到平均分布的随机数。但如何根据平均分布的随机数进而产生其它分布的随机数呢?本文提出了一种基于几何直观面积的方法,以正态分布随机数的产生为例讨论了任意分布的随机数的产生方法。 正文:一、平均分布随机数的产生 大家都知道,随机数在各个方面都有很大的作用,在vc的环境下,为我们提供了库函数rand()来产生一个随机的整数。该随机数是平均在0~RAND_MAX之间平均分布的,RAND_MAX是一个常量,在VC6.0环境下是这样定义的:#define RAND_MAX 0x7 阅读全文
posted @ 2011-12-30 16:16 董雨 阅读(232) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/feixiaoxing/article/details/6993718【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 自10月初编写算法系列的博客以来,陆陆续续以来写了几十篇。按照计划,还有三个部分的内容没有介绍,主要是(Dijkstra算法、二叉平衡树、红黑树)。这部分会在后面的博客补充完整。这里主要是做一个总结,有兴趣的朋友可以好好看看,欢迎大家提出宝贵意见。 (1) 排序算法 快速排序 合并排序 堆排序 选择排序 基数排序 冒泡排序 插入排序 希尔排序 链表排序 (2) 数据结构 线性... 阅读全文
posted @ 2011-11-24 09:39 董雨 阅读(220) 评论(0) 推荐(0)
摘要:源:http://blog.csdn.net/v_JULY_v/archive/2011/03/07/6228235.aspx 当今世界最受人们重视的十大经典算法作者:July、二零一一年三月七日。声明:有一点,希望读者明白,以下票选出来的十大算法不等同于,也绝非就是当今世界最为经典的十大算法。-------------------------- 当今世界,已经被发现或创造的经典算法数不胜数。如果,一定要投票选出你最看重的十大算法,你会作何选择列? 最近,有人在StackExchange上发起了提问,向网友们征集当今世界最为经典的十大算法。众人在一大堆入围算法中进行投票,最终得出了呼声最高的以 阅读全文
posted @ 2011-03-10 10:08 董雨 阅读(275) 评论(0) 推荐(0)