《算法导论》散列表

散列表是实现字典操作的关键数据结构,提供快速查找、插入和删除操作。当关键字全域远大于实际存储的关键字集合时,散列表在空间利用率和查找效率上优于直接寻址的数组。通过散列函数将关键字映射到槽中,解决碰撞问题有链接法和开放寻址法。简单一致散列要求关键字均匀分布,常用的除法散列能有效避免冲突。开放寻址法则是当发生碰撞时寻找下一个空槽。
摘要由CSDN通过智能技术生成

散列表(Hash Table)是实现字典操作(查找、插入、删除)的有效数据结构,具有很高的查找效率。

一定情况下查找元素的期望时间是O(1),优于链表(O(n)),和直接寻址的数组(查找也是O(1))相当。但当实际存储的关键字数比可能的关键字总数小的时候,散列表比数组有效。

直接寻址 vs 散列技术

一些记号:

  • 关键字的全域U
  • 实际存储的关键字集合K(个数n)
  • 散列映射的槽数m
  • 关键字k
  • 散列函数h

直接寻址,关键字k存放在第k个槽;而散列技术下,关键字k存放在第h(k)位置下。关键字会经过一次散列函数求出映射的位置,将关键字全域U映射到0到m-1的m个槽。

直接寻址技术存在明显问题,当关键字全域U很大的时候,存储大小为|U|的表T不现实。而实际存储的关键字集合K可能远小于U,分配给T的大部分空间浪费。

因此 |K

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值