为什么使用哈希表

哈希表

1、作用:

用来快速判断一个元素是否出现在集合中,可以将查找元素的复杂度从O(n)降低到O(1).

2、哈希映射

(1)对于每一个给定的关键字key值,通过哈希函数映射 f(key) 之后,就可以得到一个在哈希表M中 记录该关键字的地址。

(2)通常的操作:
key % (总长度) = 哈希表M中的位置
每个关键字key对应的位置是固定的

(3)<font color="red"存储的数据结构
在python中,其实就是一个字典。
将每个元素都对应一个序号,构成key-value的形式,存在字典中。关键字key的值是元素,经过哈希表映射之后得到的位置是value的值。
当需要查找元素的时候,直接利用dict[key] = value 的形式就可以找到。

3、解决哈希碰撞问题

常用的解决方案有散列法和拉链法。散列法又分为开放寻址法和再散列法

4、哈希表的优势

(1)在列表查找中,使用最广泛的二分查找算法,复杂度为O(log2n),但其始终只能用于有序列表。普通无序列表只能采用遍历查找,复杂度为O(n)。
(2)拥有较为理想的哈希函数实现的哈希表,对其任意元素可以直接通过计算获取位置,查找速度始终为常数级,即O(1)。

5、js中哈希表的实现

js中只有Map,没有HashMap。HashMap只是map的一种底层实现方式。

// 创建一个Map对象
var map = new Map();

// 可以用数组当中的下标作为key,也可以用值作为key
// 检查key是否存在
map.has(key);

// 通过key取对应的value
map.get(key);

// 删除
m.delete('Adam');

// 添加
m.set('Adam', 67);

6、哈希表的空间消耗

使用哈希表的时候,需要用到栈,所以空间复杂度为O(n)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值