通俗介绍哈希表核心思想

       哈希(hash)这个词想必程序员都不陌生,常见的数据加密,哈希表都和他有关,今天主要介绍哈希表。

    哈希表又称散列表,其实“列表”说明了哈希表其实是一种数据结构,“散”字很好的突出和哈希表的结构特征。我们知道他最核心的特点就是快,访问的时间复杂度基本上可以说是O(1),和数组一致,所以我这里主要解释这两点: 1,如何实现O(1)访问的。 2,和数组有啥区别。

     一,如何实现O(1) 访问

我看网上各种讲解很多,有的长篇大论,其实核心就一点——将数据要存储的地址和数据本身通过一个函数关联起来,函数就像一个传送门一样,你输入要查找的数据,将你传送到数据所在地。  网上有些讲解真的是我难以评价,这里举个例子 来吧!一文彻底搞定哈希表! - 知乎  ,其实任何东西最根本的底层逻辑都是简单的,大道至简。回到正题,我再举个例子加深理解,图书馆有一百万本不一样的书,你现在想知道《时间简史》图书馆里面有没有,如果图书馆的书是随意摆放的,你最坏情况下需要遍历一百万次,如果图书馆像我们正常情况下那样分类摆放,你也需要去遍历时间简史所在分区,那么怎么直接得到某本书的位置呢,这就可以用到哈希的方式,图书馆所有书的摆放都要遵循这个函数的映射关系,你要找《时间简史》通过函数得到如果有这本书,他应该摆放的位置,注意这里还不知道是否有这本书,我们只知道如果有,它应该存放的位置,然后再去确认所在位置是否有这本书,没有就没有,有就有。

   二,和数组的区别

数组也是O(1),也是一种数据结构,那他和哈希表本质区别是啥? 其实还是那句话,哈希表是直接将数据内容和地址关联起来了,而数组虽然访问某个位置的是O(1),它查找某个数据是O(n)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值