美文网首页数据结构工作生活
Hash(散列)冲突解决 线性探测再散列和二次探测再散列

Hash(散列)冲突解决 线性探测再散列和二次探测再散列

作者: 魏鹏飞 | 来源:发表于2019-07-03 09:25 被阅读0次

线性探测再散列

例如 哈希函数为: H(key) = key %11,key 为关键字,采用开放地址法中的线性探测再散列解决冲突,依次输入

9 个关键字,19,01,23,14,55,68,11,82,36,构造哈希表(表长=11)

散列地址 0 1 2 3 4 5 6 7 8 9 10
关键字 55 01 23 14 68 11 82 36 19
探测次数 1 1 2 1 3 6 2 5 1

如上表,例如 14%11=3,将14放入3号位置,11%11 = 0,将11放入0号位置,而此时3号位已经有元素。

就顺着表往后放,直到5号没有元素,11放入5号。

二次探测再散列

例如 哈希函数为: H(key) = key %11,key 为关键字,采用开放地址法中的二次探测再散列解决冲突,依次输入

9 个关键字,19,01,23,14,55,68,11,82,36,构造哈希表(表长=11)

散列地址 0 1 2 3 4 5 6 7 8 9 10
关键字 55 01 23 14 36 82 68 19 11
探测次数 1 1 2 1 2 1 4 1 3

对于01%11=1,将01放入1号位置, 11%11=0,此时0号位置已经有元素,

则查找 0 + 1^2 = 1,有元素

查找 0 - 1^2 = -1 ,没有则放入,如果还有元素则查找0 + 2^2, 0-2^2.... 0+k^2, 0 - k^2。

相关文章

  • Hash(散列)冲突解决 线性探测再散列和二次探测再散列

    线性探测再散列 例如 哈希函数为: H(key) = key %11,key 为关键字,采用开放地址法中的线性...

  • HashMap深度分析疑问

    hashMap底层是基于散列算法实现,散列算法分为散列再探测和拉链式。hashmap使用了拉链式散列算法,在jdk...

  • 散列表

    散列函数将被查找的键转换为数组的索引 解决冲突的方法:拉链法和线性探测法 将整数散列最常见的方法是除留余数法,通常...

  • 常用并发容器

    一、Map 1.1hash冲突解决 开放寻址 再散列 链地址法 1.2 ConcurrentHashMap Has...

  • python数据结构教程 Day10

    本节重点: 散列 散列函数 完美散列函数 hashlib 散列函数设计 冲突解决方案 一、散列 能够使得查找的次数...

  • 面试:集合:redis:kafka

    解决hash冲突的方法 线性探测法 平方探测法 伪随机列法 拉链法 Redis和mysql数据怎么保持数据一致的 ...

  • 散列 & 线性散列

    Hashing 散列 原理: use key value to compute page address of t...

  • 4 查找

    静态查找 顺序查找法 折半查找法 散列 散列的概念 散列函数 冲突解决方法 散列算法设计与分析

  • 加密函数,加密手段。

    密码散列函数: 密码散列函数(英语:Cryptographic hash function),又译为加密散列函数、...

  • 散列 Hash

    一、什么是散列? 散列 Hash是和顺序、链接和索引一样,是存储集合或者线性表的一种方法。 散列的基本思想是:以集...

网友评论

    本文标题:Hash(散列)冲突解决 线性探测再散列和二次探测再散列

    本文链接:https://www.haomeiwen.com/subject/pxufhctx.html