
数据结构
文章平均质量分 72
hcegg
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
KMP算法总结
一般的字符串匹配,时间复杂度是O(m*n),KMP算法的时间复杂度为O(m+n). 一般的字符串匹配过程,一次匹配失败后,指针i(指向原串),指针j(指向子串)都回退至初始位置。而KMP核心思想是计算子串的next函数值(这个可以通过对子串进行预处理得到),据此决定指针i,j的指向。而子串的next函数值与原串无关,其实质是比较子串中末几位与首几位相同的位数情况。 关于...原创 2011-10-08 20:42:02 · 132 阅读 · 0 评论 -
蓄水池抽样
今天被百度鄙视了,唉!还是能力不够啊。回来看网上评论一大片,自己错的实在太离谱。有一个求概率的题目,我自己萌了半天,竟然不知到这是典型的蓄水池抽样算法。。。。 问题起源于编程珠玑Column 12中的题目10,其描述如下: http://www.cnblogs.com/HappyAngel/archive/2011/02/07/1949762.html H...原创 2011-10-16 19:28:11 · 102 阅读 · 0 评论 -
Bloom Filter
一个经典的问题:有1000瓶药物,但是其中有一瓶是有毒的,小白鼠吃了一个星期以后就会死掉,请问,在一个星期内找出有毒的药物,最少需要多少只小白鼠?如果一个人考虑问题是二进制的考虑方法,那么肯定好不犹豫的会说10只,为什么呢?因为小白鼠能够有两种状态,1代表生,0代表死,那么10只能表示2的10次方种状态,那么也就是说能表示1024种状态,那么答案也就是10只。关于小白鼠如何吃药,读者可以仔...原创 2011-10-17 13:29:24 · 266 阅读 · 0 评论 -
转载一篇好文章:《海量数据处理常用思路和方法》
转载一篇好文章:《海量数据处理常用思路和方法》2010-02-25 15:12大数据量,海量数据 处理方法总结最近有点忙,稍微空闲下来,发篇总结贴。 大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到。 下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全...原创 2011-10-18 08:26:35 · 245 阅读 · 0 评论 -
一致性hash算法 - consistent hashing
http://blog.youkuaiyun.com/sparkliang/article/details/5279393一致性 hash 算法( consistent hashing )张亮consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛;...原创 2011-10-19 09:06:36 · 139 阅读 · 0 评论 -
外部排序 败者树
先来看内部排序中最简单的2路归并排序算法。 算法核心操作是将一维数组中前后相邻的两个有序序列归并为一个有序序列,给定数组中序列界限i、m、n,用2个下标变量分别从i和j=m+1开始逐个往后处理,先比较,小的写到结果序列的当前遍历下标k中,相应下标自增继续比较直到某个序列的下标走到边界,再将另外一个序列的剩余元素拷贝到结果序列中。 算法可用递归或递推实现,从相邻的两两元素...原创 2011-10-20 20:24:55 · 538 阅读 · 0 评论 -
归并排序算法
把待排序序列分成相同大小的两个部分,依次对这两部分进行归并排序,完毕之后再按照顺序进行合并。基本分治:将原问题分解为规模小的相对独立的子问题,在出口直接解决,然后递归,将子问题的解合并int b[100]; // 辅助用的临时存储数组void Merge(int a[], int left, int mid, int right){ int i = left, j = mi...原创 2011-10-28 19:29:16 · 104 阅读 · 0 评论 -
线性时间运行的排序算法
桶式排序桶式排序不再是基于比较的了,它和基数排序同属于分配类的排序,这类排序的特点是事先要知道待排序列的一些特征。桶式排序事先要知道待排序列在一个范围内,而且这个范围应该不是很大的。比如知道待排序列在[0,M)内,那么可以分配M个桶,第I个桶记录I的出现情况,最后根据每个桶收到的位置信息把数据输出成有序的形式。这里我们用两个临时性数组,一个用于记录位置信息,一个用于方便输出数据成有...原创 2011-10-28 20:34:52 · 156 阅读 · 0 评论 -
链表问题总结
链表问题首先要注意的,必须要注意的是题意:是否为空链表,是否有环,是否是单链表链表节点的定义如下:typedef struct list {int key;struct list *next;}list;已知链表的头结点head,写一个函数把这个链表逆序关键点:1、是否是空链表;2、是否是循环链表,如果是完全循环链表(整个链表就是一个环),则直接逆序就行,如果不...原创 2011-10-28 21:10:41 · 160 阅读 · 0 评论