哈希表(python)

哈希表一个通过哈希函数来计算数据存储位置的数据结构,通常支持

如下操作:

        ①、insert(key, value):插入键值对(key, value)

        ②、get(key):如果存在键值对则返回器value,否则返回空置

        ③、delete(key):删除键为key的键值对

直接寻址技术缺点:

        当域U更大时,需要消耗大量内存,很不实际。

        如果域U很大而实际出现的key很小,则大量空间被浪费。

        无法处理关键字不是数字的情况。

哈希

        直接寻址表:key为k的元素放在k的位置上

        改进直接寻址表:哈希。

         ①、构建大小为m的寻址表T。

         ②、key为k元素放到 h(k) 位置上

         ③、h(k) 是一个函数(哈希函数),其将域U映射到表T【0,1 ,... ,m - 1】

哈希表

        哈希表(Hash Table, 有称为散列表),是一个线性表的存储结构。哈希表有一个直接寻址表和一个哈希函数构成。哈希函数 h(k) 将元素关键字k作为自变量,返回元素的存储下标。

        假设有一个长度为7 的哈希表,哈希函数h(k) = k % 7。元素集合{14, 22, 3, 5}

的存储方式如下图。

哈希冲突

通俗的说经过哈希函数到达一个地方。

        由于哈希表的大小是有限的, 而要存储的值总数量是无限的,因此对于任何哈希函数,都会出现两个不同元素映射到同一个位置上的情况,这种情况叫做哈希冲突。

比如:h(k) = k % 7,h(0) = h(7) = h(14) = ....。

解决哈希冲突——开放寻址法

        开放寻址法:如果哈希函数返回的位置已经有值,则可以向后探查新的位置来存储这个值。

          ①、线性探查:如果位置i 被占用,则探查i +1i + 2 ....

          ②、二次探查:如果位置i 被占用, 则i + 1^{2}i - 1^{2}i + 2^{2}i - 2^{2},....

          ③、二度哈希:有n个哈希函数,当使用第一个哈希函数h1发生冲突时,则尝试使用h2, h3,...

哈希表——常用的哈希函数

哈希表的应用——集合与字典

哈希表的应用——SHA2

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值