哈希函数的简单介绍

本文介绍了哈希函数的概念,它如何将数据与数组位置关联,以及哈希表与数组的区别。讨论了冲突的解决方法,如开放定址法和拉链法,并强调了哈希函数在查找速度和数据完整性检查(如应用下载检测)中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

哈希函数:

hash: =把....弄糟(乱)

又称为散列函数,杂凑函数

什么是哈希表

哈希表简单来说可以看作是是对数组的升级,(也有不少人认为哈希表的本质就是数组),那么哈希表和数组的具体联系和区别在哪里呢?

我们在利用数组存储数据的时候,记录在数组中的位置是随机的,位置和记录的关键字之间不存在确定的关系。

联系:哈希表是由数组实现的。

区别:数组中存储的元素的和数组下标没有确定的关系,而哈希表中存储的元素和数组的下标有一个确定的关系,我们将这个确定的关系称之为哈希函数(Hash).

哈希函数的应用场景模拟:

         在一个大型超市里找出一个商品的价格

没用哈希函数:

遍历数组,不能一下找到商品的价格,顾客等的时间长,不高兴。

用了哈希函数:

通过哈希函数相同参数,返回特定的值,一下就能找到该元素的位置,顾客很高兴

hash函数的冲突

  • 冲突两个不同的关键字,由于散列函数值相同,因而被映 射到同一表位置上。该现象称为冲突(Collision)或碰撞。

                因素:
  (1)与散列函数有关,一个好的散列函数的值应尽可能平均分布。
       (2)与解决冲突的哈希冲突函数有关。
       (3)与负载因子的大小。太大不一定就好,而且浪费空间严重,负载因子和散列函数是联动的。                

解决冲突的办法:
       (1)开放定址法:线性探查法、平方探查法、伪随机序列法、双哈希函数法。
       (2)拉链法:把所有同义词,即hash值相同的记录,用单链表连接起来。

特点:

不同的参数返回不同的数(不一定)

相同的参数返回相同的数(一定)

不同的商品借助哈希函数,存储数据,可以实现数据到存储位置的一对一映射,从而把数据和属性放在同一张表里(数组),这种表称为哈希表,也成为散列表。

应用场景:

应用下载检测完整性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值