hash表解析

概念

hash表是一种以键值对(key-indexd)存储数据的结构,我们只要输入待查找的值即key,就可以查找到其对应的值

哈希的思路很简单,如果所有的键都是整数,那么就可以使用一个简单的无序数组来实现:将键作为索引,值即为其对应的值,这样就可以快速的访问任意键的值,这是对于简单键的情况,我们将其扩展到可以处理更加复杂的类型键

数组的特点是:寻址容易,插入和删除困难

链表的特点是:寻址困难,插入哈删除容易

在这里插入图片描述
左边很明显是个数组,数组的每个成员包括一个指针,指向一个链表头,当然这个链表可能为空,也可能元素很多。我们根据元素的一些特征把元素分配到不同的链表中去,也是根据这些特征,找到正确的链表,再从链表中找出这个元素。

优缺点:

1.不轮哈希表中多少数据,查找,插入,删除 只需要接近常量的时间即o(1)的时间级,
2.哈希运算得非常快,在计算机程序中,如果需要在一秒钟内查找上千条记录通常使用哈希表。

1.它是基于数组的,数组创建后难于扩展,某些哈希表被基本填满时,性能下降得非常严重,所以程序员必须要清楚表中将要存储多少数据(或者准备好定期地数据转移到更大的哈希表中,这是一个费时的过程)

使用哈希查找:

1.使用哈希函数将被查找的键转换为数组的索引。在理想的情况下,不同的键会被转换为不同的索引值,但是有些情况下我们需要处理多个键哈希到同一个索引值的情况。所以哈希查找的第二步就是处理冲突

哈希表是一个在时间和空间上做出权衡的经典例子。如果没有内存限制,那么可以直接将键作为数组的索引。那么所有的查找时间复杂度为o(1);如果没有时间限制,那么我们可以使用无序数组并进行顺序查找,这样只需要很少的内存。哈希表使用了适度的时间和空间来在这两个极端之间找到了平衡。只需要调整哈希函数算法即可在时间和空间做出取舍。

未完待续~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值