哈希表

作者: 小吉头 | 来源:发表于2021-02-08 09:31 被阅读0次

直接寻址法


U表示所有可能出现的key范围,K表示实际的key。如图建一个列表,下标包含所有可能的key
缺点:

  • 当U范围很大时,实际的K范围很小,费内存
  • 只能处理key是 数字的情况

哈希表概念

哈希表又称散列表,是一种线性表存储结构。在直接寻址表上做了修改,由一个直接寻址表和一个哈希函数组成,哈希函数h(key)返回元素的存储下标。
哈希表通常支持如下操作:

  • insert(key,value):插入键值对
  • get(key):得到键为key的value值
  • delete(key):删除键为key的键值对

哈希冲突

由于哈希表(直接寻址表)大小是有限,存储的值总数量是无限的,对于任何哈希函数,都可能出现两个不同的元素映射到同一个下标

解决哈希冲突

  1. 开放寻址法:如果哈希函数返回的位置已经有值,可以向后探查新的位置来存储该值
  • 线性探查:如果位置i被占用,探查i+1、i+2、...
  • 二次探查:如果位置i被占用,探查i+12、i+22、...
  • 二度哈希:有n个哈希函数,当第一个哈希函数h1发生冲突时,尝试使用h2、h3、...
  1. 拉链法:哈希表每个位置都连接一个链表,冲突的元素将被加到对应位置链表的最后

哈希表在python的应用

python中字典和集合都是通过哈希表实现
比如字典:{"name":"tom","age":12,"hobby":"swimming"},假设h("name")=2,h("age"=1),h("hobby")=0,哈希表的存储为["swimming",12,"tom"]

相关文章

  • Java数据结构_哈希表_基本概念

    本文目标 哈希表的基本概念,哈希冲突,哈希函数 什么是哈希表 哈希表也叫做散列表(hash有剁碎的意思)哈希表是空...

  • redis数据结构--字典

    Redis的字典底层就是哈希表。 哈希表 首先给出哈希表的定义: 其中可以看到,table是一个哈希表节点的数组,...

  • 哈希表和链表

    优秀文章:Chapter: 散列表(哈希表) 一、哈希表 哈希表hashtable(key,value) 就是把K...

  • 算法-哈希表算法总结

    1 哈希表模拟 思路:通过设计哈希表,模拟O(1)时间复杂度的哈希表。 2 数组作为哈希表 思路:数组就是简单的哈...

  • 数据结构 -- 哈希表及其应用

    这篇主要用来记录一下学习到的关于哈希表的知识点。 文章结构 哈希表 哈希表的定义 哈希表的优缺点 哈希碰撞 负载因...

  • 数据结构与算法(第一季):哈希表(Hash Table)

    一、哈希表(Hash Table) 1、概念 哈希表也叫做散列表。 哈希表的原理: 利用哈希函数生成key对应的i...

  • 深入理解哈希表

    深入理解哈希表 深入理解哈希表

  • 2019 算法面试相关(leetcode)--哈希表

    哈希表相关的原理可以参考下:浅谈哈希表(HashTable)深入理解哈希表哈希表的理解理解HashSet及使用 哈...

  • Redis中的字典

    Redis中的字典 Redis中的字典使用哈希表作为底层实现,一个哈希表中可以有多个哈希表结点,而每个哈希表结点保...

  • Redis数据结构与对象——哈希

    1 字典的实现 Redis的字典使用哈希表作为底层实现,一个哈希表可以有多个哈希表节点,即每个哈希表节点就保存了字...

网友评论

      本文标题:哈希表

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