一、哈希表
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
以下是用线性探测法构造哈希表的一个具体例子:已知一组关键字为(39,49,54,38,44,28,68,12,06,77),用除余法构造散列函数,用线性探查法解决冲突构造这组关键字的散列表。 解答:为了减少冲突,通常令装填因子α<l。这里关键字个数n=10,不妨取m=13,此时α≈0.77,散列表....
分类:
其他好文 时间:
2015-10-30 15:26:34
阅读次数:
307
前言: 哈希表(Hash Table)也叫散列表,是一种用于快速存取的数据结构。其内部实现是通过把键(key)码映射到表中的一个位置来访问记录,其中的“映射”也就是哈希函数,而“表”即哈希表。本文将重点介绍实现哈希表的2种方法:拉链法和线性探测法。1.实验数据 A 2C 1B 6B 11H...
分类:
其他好文 时间:
2015-09-13 15:55:59
阅读次数:
264
哈希函数:将一个哈希表中的关键字映射成该关键字对应地址的函数。而hash函数应尽量减少冲突哈希表建立了关键字和存储地址的映射。哈希函数的方法:直接定址法,除留余数法,数字分析法,平方取中法,折叠法处理冲突的方法开放定址法:线性探测(容易聚集和堆积)平方探测拉链法:
分类:
其他好文 时间:
2015-07-20 10:43:01
阅读次数:
116
FastByIdMap是基于散列的,在处理冲突时是线性探测而非分离链接,这样就不必为每一个条目增加一个Map.Entry对象,从而节省内存开销。
下面代码是一个线性探测Map的Demo:package com.example.mahout;public class ArrayHashST_Linear_Probing {
private int M = 30001;...
分类:
其他好文 时间:
2015-07-07 22:52:06
阅读次数:
163
Description 采用除留余数法(H(key)=key %n)建立长度为n的哈希表,处理冲突用开放定址法的线性探测。Input 第一行为哈希表的长度n; 第二行为关键字的个数; 第三行为关键字集合; 第三行为要查找的数据。Output 如果查找成功,输出关键字所哈希表中的地址和比较次数;如果查...
分类:
其他好文 时间:
2015-06-16 10:37:23
阅读次数:
283