#include<stdio.h>
#include<stdlib.h>
typedefstruct//哈希
{
intkey;//哈希地址关键字
inthi;//哈希冲突次数
}DataType;
typedefstruct
{
DataType*data;
inttableSize;//哈希长度
intcurSize;//关键字长度
}HashTable;
//创建哈希表,m为哈希长度,p为用于..
分类:
其他好文 时间:
2016-05-14 01:10:20
阅读次数:
181
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3667
思路:首先我们说说Miller_Rabin算法
我们发现了费马小定理
那它倒过来对不对呢
如果a^(p-1)=1(mod p),那么p一定是素数吗?
很不幸,是错的
虽然出错概率很低,但是可以被卡
于是我们就给它打补丁
我们又找到了一个二次探测的方法
如果p是质数,那...
分类:
编程语言 时间:
2016-05-13 00:37:34
阅读次数:
288
二次探测是避免哈希冲突的一种常见手段,思想是:插入:找到哈希位置(serch)->如果不冲突就插入,冲突就进行第一次探测第1次探测:哈希位置变为原有哈希位置加上1*1的偏移->进行插入........第i次探测:哈希位置变为原有哈希位置加上i*i的偏移->进行插入知道插入完..
分类:
其他好文 时间:
2016-05-11 20:13:47
阅读次数:
127
哈希桶:哈希桶就是盛放不同key链表的容器(即是哈希表),我们可以把每个key的位置看作是一个指针,该指针所指向的位置里放了一个链表,可以认为是指针数组,故该方法也叫开链式。相比闭散列,哈希桶提高了空间利用率:在实现哈希表时,常见的方法是线性探测、二次探测,这两..
分类:
其他好文 时间:
2016-05-11 11:30:42
阅读次数:
413
哈希表:不同的Key值经过哈希函数Hash(Key)处理以后可能产生相同的值哈希地址,我们称这种情况为哈希冲突。所以用哈希冲突的开链法(哈希桶)进行处理,其结构如下:代码如下:#define_CRT_SECURE_NO_WARNINGS1
#include<iostream>
#include<vector>
usingnamespaces..
分类:
其他好文 时间:
2016-05-10 23:51:06
阅读次数:
227
HashTable-散列表/哈希表,是根据关键字(key)而直接访问在内存存储位置的数据结构。它通过一个关键值的函数将所需的数据映射到表中的位置来访问数据,这个映射函数叫做散列函数,存放记录的数组叫做散列表。哈希冲突/哈希碰撞不同的Key值经过哈希函数Hash(Key)处理以后可能产..
分类:
其他好文 时间:
2016-05-10 23:50:40
阅读次数:
466
1.直接定址法、数字分析法、平方取中法 、折叠法、随机数法、除留余数法;
2.冲突解决:开放定址法(线性探测、二次探测和随机探测)、链地址发、再哈希发、建立溢出区...
分类:
其他好文 时间:
2016-05-10 18:50:48
阅读次数:
122
构造哈希表常用的方法是:除留余数法--取关键值被某个不大于散列表长m的数p除后的所得的余数为散列地址。HashKey=Key%P。直接定址法--取关键字的某个线性函数为散列地址HashKey=Key或HashKey=A*Key+BA、B为常数。我在这里主要使用一下除留余数法Hash(key)=Key%P,(P这里是哈希..
分类:
编程语言 时间:
2016-05-08 20:10:22
阅读次数:
345
实现哈希表时,我们常见的方法是线性探测、二次探测,这两个算法也很简单。若有兴趣,可以查看我的博客。但是,这两个算法有一个共同点就是:空间利用率低。为什么这么说呢?线性探测、二次探测的高效性很大程度上要取决于它的载荷因子,载荷因子即:存放关键字个数/空间大校通..
分类:
编程语言 时间:
2016-05-08 20:09:10
阅读次数:
532
散列表(Hashtable,也叫哈希表),是根据关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数Hash(key),对任意给定的关键字值..
分类:
其他好文 时间:
2016-05-08 01:25:06
阅读次数:
530