哈希冲突的解决方法
2016-07-30 11:19
197 查看
1.拉链法------即数组加链表的数据结构解决地址冲突,Java中HashTable和HashMap用的就是用的这种冲突解决方法
2.开地址法(不建立链表)------按照给定探测序列,依次查找key能插入的位置。根据生成的探测序列的不同,可以有:线性探测法、和二次探测法。
线性探查法的序列记为:
h(i)=(h(key)+i) mod M
容易造成元素连成一片,从而使得探查次数增加,影响搜索效率
二次探查法,采用下列循环探测序列:
h(2i-1)=(h(key)+i^2) mod M
h(2i)=(h(key)-i^2) mod M 二次探查能消除基本聚集,但是探查序列是基位置的序列,会有二级聚集问题
2.开地址法(不建立链表)------按照给定探测序列,依次查找key能插入的位置。根据生成的探测序列的不同,可以有:线性探测法、和二次探测法。
线性探查法的序列记为:
h(i)=(h(key)+i) mod M
容易造成元素连成一片,从而使得探查次数增加,影响搜索效率
二次探查法,采用下列循环探测序列:
h(2i-1)=(h(key)+i^2) mod M
h(2i)=(h(key)-i^2) mod M 二次探查能消除基本聚集,但是探查序列是基位置的序列,会有二级聚集问题
相关文章推荐
- Codeforces 702B Powers of Two
- Chrome 实用调试技巧
- Vuejs入门篇
- 9.Linux的定时任务
- svn 设置post-commit后 报错svn: Can't convert string from 'UTF-8' to native encoding
- (多校第四场1012)HDU5763 Bubble Sort (树状数组)
- 华为OJ 初级:iNOC产品部--完全数计算
- GeekBand 第十二周笔记
- spark1.6内存管理
- Lucene学习笔记之(六)lucene的中文查询
- python 抓取ASP.NET平台信息 __VIEWSTATE
- 编写一个程序,用于接收用户输入的数,然后显示从0到该数为止表示的所有字符,询问用户是否愿意再次继续同样的过程
- 详解iOS的iBeacon 后台运行
- SPOJ - DISUBSTR Distinct Substrings
- HDOJ 2824 The Euler function (欧拉函数)
- 面试之路---进程的互斥和同步
- 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
- 基于DateTime Picker修改成类似旅游网站出发日期选择的功能
- HashMap源码分析三
- python之json模块