首先需要知道两个定理: 1: 费马小定理: 假如p是素数,且gcd(a,p)=1,那么 a(p-1)≡1(mod p)。 2:二次探测定理:如果p是素数,x是小于p的正整数,且,那么要么x=1,要么x=p-1。 证明:这是显然的,因为相当于p能整除,也即p能整除(x+1)(x-1)。 由于p是素数, ...
分类:
编程语言 时间:
2016-05-07 12:59:24
阅读次数:
2927
散列(hash)表/哈希表 1.关键字和和存储的地址建立一个对应的关系:Add = Hash(key); 2. 解决冲突方法: (1)开放定址法 – 探测方式:线性探测、二次探测。 (2)再哈希法 (3)分离链接法 – 利用链表的方式。 (4)公共溢出区法 3.存储结构:用顺序存储来构建哈希表。构建 ...
分类:
其他好文 时间:
2016-05-07 06:37:03
阅读次数:
290
哈希表,是根据关键字(Keyvalue)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。(摘自维基百科)对不同的关键字可..
分类:
其他好文 时间:
2016-05-06 02:26:01
阅读次数:
440
参考文献: 1、Cuckoo Filter hash算法 2、cuckoo hash 用途: Cuckoo Hash(布谷鸟散列)。问了解决哈希冲突的问题而提出,利用较少的计算换取较大的空间。占用空间少,查询速度快。经常应用于Bloom Filter和内存管理中。之所以起这个名字是因为布谷鸟生性贪婪 ...
分类:
其他好文 时间:
2016-05-02 11:49:45
阅读次数:
432
每两个做输入,先在输入中比大小; 较小者去比较最小记录,较大者去比较最大记录; 建堆; 取K次最大 要求取最大/最小; 可增加、删除元素; 取最大/最小 O(logN) 增加/删除 O(logN) 冲突解决方法: 线性探测法,开链法(申请、释放内存,效率低) 当填充因子较大,需要再哈希 某个; 知前 ...
分类:
编程语言 时间:
2016-04-23 13:25:06
阅读次数:
220
一、哈希表
1、概念
哈希表(Hash Table)也叫散列表,是根据关键码值(Key Value)而直接进行访问的数据结构。它通过把关键码值映射到哈希表中的一个位置来访问记录,以加快查找的速度。这个映射函数就做散列函数,存放记录的数组叫做散列表。
2、散列存储的基本思路
以数据中每个元素的关键字K为自变量,通过散列函数H(k)计算出函数值,以该函数值作为一块连...
分类:
其他好文 时间:
2016-04-18 13:51:28
阅读次数:
15062
散列表散列表查找分两步:
1. 根据散列函数找到索引
2. 处理索引冲突情况:拉链法和线性探测法散列表示时间上和空间上作出权衡的例子。没有内存限制我们可以直接将一个超大数组作为符号表,但是键很多时会导致需要的内存很大。
散列表采用函数映射,查找很快,但是键的顺序信息不会保存散列函数对于每种类型的键我们都学要一个与之对应的散列函数
正整数:
常用取余散列:k%M
浮点数:
例如0-1之间...
分类:
其他好文 时间:
2016-04-17 23:04:35
阅读次数:
390
头文件://1.用《负载因子》来减少哈希冲突**//2.用开辟《素数》个空间来减少哈希冲突**//3.用《线性探测》·《二次探测》·《string的特殊算法》来减少哈希冲突**//4.防止《数据冗余》//5.用头插法插入节点》》》》》》为什么?//6.用《伪函数》实现功能模块的复用还有《模板..
分类:
其他好文 时间:
2016-04-10 19:35:01
阅读次数:
325
#pragmaonce
#include<iostream>//含一次探测二次探测
#include<vector>
#include<math.h>
usingnamespacestd;
enumStatus
{
EXIST,
EMPTY,
DELET,
};
template<classK,classV>//key/value形式结构体
structKV
{
K_key;
V_value;
KV(constK&..
分类:
编程语言 时间:
2016-03-23 11:26:40
阅读次数:
339