关于Hash散列的集中查重方式

栏目: 数据库 · 发布时间: 6年前

内容简介:这里总结一下Hash散列当出现不能插入位置的几种位移和计算方式,以免遗忘和出现不知道都在讲些神马;当我们key1和key2冲突的时候,主要有三种方式进行冲突解决;先来说两种开放定址法,所谓开放定址法就是重新计算了hash值;

这里总结一下Hash散列当出现不能插入位置的几种位移和计算方式,以免遗忘和出现不知道都在讲些神马;

当我们key1和key2冲突的时候,主要有三种方式进行冲突解决;

先来说两种开放定址法,所谓开放定址法就是重新计算了hash值;

1.线性探查法:

当我们插入key的位置,产生冲突之后,加1,查看该位置是否可以使用。如果不可以使用,再次+1,重复到找到位置,或者查完没有满足的位置,并且在这个途中,可以越过尾部,从hash序列头部进行枚举。

但是该方法有一个缺点,就是容易造成元素扎堆;

2.平方探查法:

插入时,当H(key)的位置被占时,将检查下列位置:H(key)+1^2,H(key)-1^2,H(key)+2^2,H(key)-2^2...。如果在这个途中H(key)+k^2超过了表长,则进行取模操作;如果H(key)-k^2<0时,则进行((H(key)-k^2)%Tsize+Tsize)%Tsize,从而保证索引为正;

这两个方向的操作称为正向和负向操作,为了避免计算麻烦,往往可以采用正向操作;注意一点,寻找的次数k在[0,Tsize]内,当k超过这个范围,必不可能插入,停止计算;

第三中时拉链法则:

3.拉链法:

拉链法不计算新的hash值,而是在重复Hash值的地方构建一个单链表,从而将所有重复的节点连接起来,查询的时候遍历该链表中的所有元素;


以上所述就是小编给大家介绍的《关于Hash散列的集中查重方式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web Anatomy

Web Anatomy

Robert Hoekman Jr.、Jared Spool / New Riders / 2009-12-11 / USD 39.99

At the start of every web design project, the ongoing struggles reappear. We want to design highly usable and self-evident applications, but we also want to devise innovative, compelling, and exciting......一起来看看 《Web Anatomy》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具