数据结构与算法笔记(九)哈希表

哈希表是一种利用函数映射实现快速查找的数据结构,通过哈希函数将关键字直接转化为存储地址。哈希冲突是其主要问题,可以通过开放定址法、链地址法等方法解决。哈希表在高级语言中常被黑盒化处理,提供高效插入、删除和查找操作。举例说明了哈希表在字符串计数场景的应用。
摘要由CSDN通过智能技术生成

哈希表

哈希表名字源于 Hash,也可以叫作散列表。哈希表是一种特殊的数据结构,它与数组、链表以及树等我们之前学过的数据结构相比,有很明显的区别。

哈希表的核心思想

哈希表的设计采用了函数映射的思想,将记录的存储位置与记录的关键字关联起来。这样的设计方式,能够快速定位到想要查找的记录,而且不需要与表中存在的记录的关键字比较后再来进行查找

简单理解为    地址  = f(关键字)    

通过构建哈希表,直接构建关键字到地址的映射关系,查询可以降低时间复杂度,仅为O(1),之前的其他数据类型查询的时间复杂度为O(n)

哈希函数的致命问题——哈希冲突

假如Hash函数为每个字的开头大写字母的ASCII码之和

address (张一) = ASCII (Z) + ASCII (Y) = 90 + 89 = 179;

address (张二) = ASCII (Z) + ASCII (E) = 90 + 69 = 159;

address (张三) = ASCII (Z) + ASCII (S) = 90 + 83 = 173;

address (张四) = ASCII (Z) + ASCII (S) = 90 + 83 = 173;

f(张三)和f(张四)都是173,这个现象就叫哈希冲突

从本质上来看,哈希冲突只能尽量减少,不能完全避免。因为只要输入的数据量够多,分布够广,就可能发生冲突。

因此,哈希表需要设计合理的哈希函数,并且对冲突有一套处理机制。

设计哈希表<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值