
数据结构与算法
文章平均质量分 75
冰火两重天
专注于hadoop平台大数据处理的技术对机器学习以及统计学持续的不断深入
展开
-
浅谈bitmap算法
http://blog.youkuaiyun.com/kongzhp/article/details/7525397久闻《编程珠玑》一书中提出的bitmap算法之大名,只是没有深入的去研究,今天下午有兴致研究一番,才知道其中的玄机奥秘,不亚于KMP算法之巧妙,下面就由浅入深的谈谈bitmap算法。 一、bitmap算法思想 32位机器上,一个整形,比如int a; 在内存中转载 2012-08-11 14:43:19 · 4668 阅读 · 1 评论 -
【算法导论】快速排序
快速排序是一种就地排序的算法,它是基于分治法而实现的。代码实现(C语言)static int partition(int * const p,int start,int end){ /** i的起始值为start-1 j的起始值为start */ int i = start -1,j=start; int cmpkey = *原创 2013-03-04 20:27:14 · 889 阅读 · 0 评论 -
【算法导论】归并排序
算法描述 归并排序是分治策略的一种体现,很多算法在结构上是可以递归的,为了解决一个问题,需要一次或多次递归调用自身来解决相关的子问题。 归并排序需要额外的内存空间,是一种以空间换取时间的排序方法。 下例中采用二路归并,且在一段小数据时,使用插入法排序。代码实现(C实现)#includeint insertsort(int * const p,int st原创 2013-02-19 22:00:46 · 758 阅读 · 0 评论 -
插入排序【算法导论】
算法描述 插入排序是一种就地,增量排序,不需要额外的存储空间。它主要是针对小数据两的排序。 核心思想:类似抓扑克牌,右手抓牌向左手持有的牌中插入,每次插入后保证左手持有的扑克牌是有序的。伪代码 for j-<2;j<length[A];j++ key=A[j]; i=j-1; while i>0 and A[i]>k原创 2013-02-16 14:00:15 · 714 阅读 · 0 评论 -
求递归算法时间复杂度:递归树
转载:http://www.cnblogs.com/wu8685/archive/2010/12/21/1912347.html递归算法时间复杂度的计算方程式一个递归方程: 在引入递归树之前可以考虑一个例子: T(n) = 2T(n/2) + n2 迭代2次可以得: T(n) = n2 + 2(2T(n/4) + (n/2) 2)转载 2012-09-26 09:25:00 · 1183 阅读 · 0 评论 -
等概率随机函数的实现
http://blog.youkuaiyun.com/hackbuteer1/article/details/7486748#reply题目:已知随机函数rand(),以p的概率产生0,以1-p的概率产生1,现在要求设计一个新的随机函数newRand(), 使其以1/n的等概率产生1~n之间的任意一个数。解决思路:可以通过已知随机函数rand()产生等概率产生0和1的新随机函数Rand(),然转载 2012-10-11 09:25:08 · 1460 阅读 · 1 评论 -
BloomFilter——大规模数据处理利器
http://www.cnblogs.com/heaad/archive/2011/01/02/1924195.htmlBloomFilter——大规模数据处理利器 Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。 一. 实转载 2012-09-03 19:55:37 · 805 阅读 · 0 评论 -
【算法导论】之堆排序
堆的简介 一般说堆,说的是二叉堆。堆数据结构是一种数组对象,它可以被看作为一棵完全二叉树。树中的每个节点与数组中存放该节点值的那个元素对应。 堆有两个属性:堆能容纳的元素个数,堆中存放的元素个数。二叉堆有两种:大根堆和小跟堆,它们应该满足的性质:A[parent[i]]>=A[i]或A[parent[i]]堆的操作保持堆的性质Heap * init_heap原创 2013-02-20 21:17:45 · 801 阅读 · 0 评论