Category Archives: 算法&数据结构

算法技术手册 – 排序 – 划分

划分是求Kth、快速排序等的基础。

目标:一个数组array,给定一个pivotIndex,要求将array[pivotIndex]的对象至于storeIndex位置,使得[left,storeIndex)的元素都小于array[pivotIndex],而使得大于[storeIndex,right]的元素都大于等于array[pivotIndex]。

算法步骤:
1、交换array[pivotIndex]和array[right],记前者为pivot
2、用store表示pivo[......]

继续阅读

算法技术手册 - 排序 - 插入排序

插入排序:

类似洗牌,将从1~N的数字分别插入到合适的位置,当然对于数组来说,需要做相应的移动。基础的方法是依次挪动,较为快捷的方法是memmove。

需要说明的是,按照Linux的man手册,memmove是支持内存overlap的,即可以部分重叠,函数内部会处理好其他的事情,因此类似书上的先移动到buffer,再从buffer移动到另一个位置是没必要的!
#include <stdio.h>
#include <string.h>

typedef[......]

继续阅读

MurmurHash3的官方实现

首先声明,根据我的实验测试,MurmurHash并非碰撞效率最好的,但确实是速度非常非常快的。

我将基于C++和如下的官方实现,开发BloomFilter并开源,尽请关注。

http://smhasher.googlecode.com/svn/trunk/MurmurHash3.h
http://smhasher.googlecode.com/svn/trunk/MurmurHash3.cpp[......]

继续阅读

Bloom Filter实现的一些文章

1、给出了Java实现,用Random做为一致性哈希算法。。。
http://blog.locut.us/2008/01/12/a-decent-stand-alone-java-bloom-filter-implementation/

2、分析比较到位:
http://blog.csdn.net/jiaomeng/article/details/1495500

3、这个写的也不错
http://www.cnblogs.com/heaad/archive/2011/01/02/[......]

继续阅读