
算法设计
zqt520
这个作者很懒,什么都没留下…
展开
-
小偷问题
题目:警察局抓了a,b,c,d四名偷窃嫌疑犯,当中只有一个是小偷,审问结果如下:a说:“我不是小偷。”b说:“c是小偷。”c说:“小偷肯定是d。d说:“c在冤枉人。”现在已经知道4个人中3人说的是真话,一个说的是假话,那么谁是小偷? 分析:如果不用代码,让读者硬做这题的话,思路往往是一个个假设过去,如假设a是小偷,然后判断4个人的话是不是3真1假。转载 2012-04-03 14:00:29 · 1342 阅读 · 0 评论 -
链表排序
相比较线性表的排序而言,链表排序的内容稍微麻烦一点。一方面,你要考虑数据插入的步骤;另外一方面你也要对指针有所顾虑。要是有一步的内容错了,那么操作系统会马上给你弹出一个exception。就链表的特殊性而言,适合于链表的排序有哪些呢? (1)插入排序 (适合) (2)冒泡排序 (适合) (3)希尔排序 (适合) (4转载 2012-09-25 10:07:50 · 473 阅读 · 0 评论 -
KMP
KMP算法详解我们从一个普通的串的模式匹配算法开始讲起,这样你才能更深入的了解KMP算法及其优点。咱们先来看看普通的串的模式匹配算法是怎么进行比较的主串 (S) a b a b c a b c a c b a b子串 (T)a b c a c (子串又被称为模式串)红色表示当前这趟比较指针所在位置,兰色表示当前这趟比较中匹配的部分第一趟(详细过程)a转载 2012-09-23 23:44:24 · 403 阅读 · 0 评论 -
对KMP算法的理解
KMP算法是一种高效的模式匹配算法,复杂度可以达到O(m+n),而普通模式匹配算法的复杂度为O(m*n)。普通模式匹配算法 从主串的第一个字符(或者给定的第pos个字符)开始和子串的第一个字符开始比较,若相等,则继续比较后面的字符。若不相等,则从主串本次开始比较的字符的下一个字符开始,与子串的第一个字符进行比较(即主串需要回退到本次比较开始字符的下一字符,模式串回退到首字符,主串转载 2012-07-31 20:24:27 · 501 阅读 · 0 评论 -
KMP算法
KMP算法KMP 匹配算法是由 "Knuth Morris Pratt" 提出的一种快速的模式匹配算法。 hint:不为自身的最大首尾重复子串长度1.待解决的问题:假设P为给定的子串,T是待查找的字符串,要求从T中找出与P相同的所有子串,这称为模式匹配问题。 (可以给出子串在T中的位置) (下文中提到的P和T分别为子串和目标串)让我们先来看个例题:T: t0 t1 t2转载 2012-07-31 18:36:13 · 374 阅读 · 0 评论 -
STL源码剖析---红黑树原理
一、红黑树概述 红黑树和我们以前学过的AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。不过自从红黑树出来后,AVL树就被放到了博物馆里,据说是红黑树有更好的效率,更高的统计性能。这一点在我们了解了红黑树的实现原理后,就会有更加深切的体会。 红黑树和AVL树的区别在于它使用颜色来标识结点的高度,它所追求的是局部平衡而不是AVL转载 2012-07-28 14:14:38 · 6268 阅读 · 2 评论 -
《算法导论》笔记--B树
B树是平衡树的一种,主要用于操作存储在磁盘等二级存储设备上的大量数据。相比起内存(主存)来说,磁盘操作的速度非常慢(慢几个数量级),所以涉及到存储在磁盘的数据的时候,尽量减少磁盘的读取和写入操作对于提高操作速度是非常重要的。B树就是针对这个特点进行设计以满足相应要求的。 B树的性质:1. B树内的每一个节点x都具有以下字段:当前存储在节点x中的关键字(key)个数n[x]。转载 2012-07-28 00:44:13 · 3255 阅读 · 0 评论 -
1.[算法]不使用*、/、+、-、%操作符求一个数的1/3
导读:算法一直是程序员进阶的一道龙门,通常算法都是为了更高效地解决问题而创造的,但也有的只是出于学术性,并不在意其实际意义。这是近日在国外技术问答网站stackoverflow的一个热门问题,不知道你能给出几种解决方法?问:在不使用*、/、+、-、%操作符的情况下,如何求一个数的1/3?(用C语言实现)第一种方法:使用位操作符并实现“+”操作// 替换加法运算符 int add(int转载 2012-08-07 17:36:05 · 592 阅读 · 1 评论 -
FP-tree
FP-tree目录FP-tree定义FP-tree构造算法FP-tree的相关的性质定理 FP-growth算法(Frequent Pattern-growth)使用了一种紧缩的数据结构来存储查找频繁项集所需要的全部信息。采用算法:将提供频繁项集的数据库压缩到一棵FP-tree来保留项集关联信息,然后将压缩后的数据库分成一组条件转载 2012-07-20 00:11:48 · 1532 阅读 · 0 评论 -
从海量数据中找出中位数
题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存)。关于中位数:数据排序后,位置在最中间的数值。即将数据分成两部分,一部分大于该数值,一部分小于该数值。中位数的位置:当样本数为奇数时,中位数=(N+1)/2 ; 当样本数为偶数时,中位数为N/2与转载 2012-04-14 09:57:35 · 510 阅读 · 0 评论 -
海量处理 -- bitmap及区段划分
还有一种经常使用的策略是bitmap. Bitmap本身也是一种hash-table, 只不过hash的结果恰好落在[0, sizeof_bitmap_in_bits]内. 因为hash到的每个slot只有一个bit,所以通常用作判断是否存在等bool型的问题.例子, 已知40亿个不重复的unsigned int, 如何判断一个整数在不在这40亿个整数里面?给定说unsig转载 2012-04-14 09:47:07 · 687 阅读 · 0 评论 -
海量数据处理利器 STL中哈希表 hash_map(C++)
对海量数据进行处理的时候经常要使用hash_map,java里使用hash_map比较简单,下面将介绍C++ STL中哈希表 hash_map的使用方法,主要内容引用下面链接内容。http://blogold.chinaunix.net/u2/82382/showart.php?id=20729590 为什么需要hash_map用过map吧?map提供一个很常用的功能,那就转载 2012-04-14 09:13:07 · 1047 阅读 · 0 评论 -
URL短地址压缩算法 微博短地址原理解析
引自 http://www.nowamagic.net/webdesign/webdesign_ShortUrlInTwitter.php短网址应用已经在全国各大微博上开始流行了起来。例如QQ微博的url.cn,新郎的sinaurl.cn等。我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如:http://url.cn/2hytQx为什么要这样做的,原因我想有这样转载 2012-04-14 09:33:19 · 750 阅读 · 0 评论 -
找二叉树中两个节点的最近的公共父节点
找二叉树中两个节点的最近的公共父节点很流行的一个问题,常见于各种面试中,http://fayaa.com/tiku/view/16/ 这里有一个很好的汇总.找寻二叉树中两个节点的公共父节点中最近的那个节点 情况1. 节点只有left/right,没有parent指针,root已知情况2. root未知,但是每个节点都有parent指针情况3. 二叉树是个二叉查找树,转载 2012-04-14 10:28:19 · 491 阅读 · 0 评论 -
海量数据处理系列——C语言下实现bitmap算法
bitmap是一个十分有用的结构。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。如果说了这么多还没明白什么是Bit-map,那么我们来看一个具体的例子,假设我们要对0-7内的5个元素(4,7,2,5,3)排序(这里假设这些元素没有重复)。那么我们就可以采用Bit-map的方法来转载 2012-04-14 09:11:09 · 812 阅读 · 1 评论 -
用bitmap实现中位数的算法
50亿个整数,内存限制为1G,找出中位数。50亿个整数用bitmap来存储的话,大约150M的空间就足够了。下面是具体的算法,用PHP实现define("MASK", 0x1f);$source = array(1, 74, 4, 256, 1024, 110, 111, 112, 123, 112, 100);$array = array();$count =转载 2012-04-10 23:47:26 · 651 阅读 · 0 评论 -
libevent入门
花了两天的时间在libevent上,想总结下,就以写简单tutorial的方式吧,貌似没有一篇简单的说明,让人马上就能上手用的。首先给出官方文档吧: http://libevent.org ,首页有个Programming with Libevent,里面是一节一节的介绍libevent,但是感觉信息量太大了,而且还是英文的-。-(当然,如果想好好用libevent,看看还是很有必要的原创 2015-10-28 17:22:06 · 162 阅读 · 0 评论