其他分享
首页 > 其他分享> > 数据结构,哈希表(笔记)

数据结构,哈希表(笔记)

作者:互联网

1. 哈希表

​ 为什么会有哈希表?

举个栗子:

一个公司里有上千个员工,我想找一个员工的信息一般通过什么方式

通过数组,每一个员工对应一个工号,我可以直接查找工号就可以获取对应的信息

但是我不想通过工号去获取,我想通过员工的名字去获取,这个时候就会想到链表,但是问题来了,链表是一个信息连着一个信息去查找,效率非常的慢

这个时候就可以用到哈希表了,可以把每个员工的名字转成对应的数字,数字对应名字,这样我直接通过数字就可以获取员工的信息了

1.1 哈希化

​ 将大数字转化为数组范围内的下标(这里的范围自己去定义)过程,比如0~100取余10就得到0-9的下标值(方式有多种,比如java采用的位运算),这个过程我们就称之为哈希化

假如有5000个单词,可能会定义一个长度为5000的数组,但是在实际情况中,我们不能保证这些单词对应的大数完全不相同,所以需要两倍的大小10000,虽然数组的长度已经足够了,但是通过哈希化后的下标还是可能会重复,这个时候就需要去解决冲突(这里的冲突是指大数哈希化后的,而不是大数)

1.2 哈希函数

​ 通常我们会将单词转成大数字(幂的连乘),大数字在进行哈希化后的代码,通过一个函数进行处理得到想要的数据,这个函数就是哈希函数

为什么要把单词转成大数字:因为我们需要,把对应的单词通过合适的方式转换为一个非常庞大的数字,这样就不会和其他的单词重复,确保了每个单词都有对应的数字(但是数据过于庞大就需要哈希化)

1.3 哈希表

​ 最终将数据都插入到一个数组中,我们就称之为是一个哈希表

1.4 解决冲突

在这里插入图片描述

在这里插入图片描述

1.5 哈希化的效率

1.6 优秀的哈希函数

1.7 哈希表扩容

1.8 哈希表的封装(链地址法)

标签:哈希,bucket,笔记,探测,let,key,数据结构,数组
来源: https://blog.csdn.net/weixin_60547084/article/details/122423691