美文网首页
iOS笔记-哈希表

iOS笔记-哈希表

作者: lmao94 | 来源:发表于2022-05-07 08:58 被阅读0次
什么是哈希表?

哈希表也叫散列表,是一个根据键(key)直接访问在内存存储位置的数据结构

通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这种方式加快了查找速度。而这个映射函数称作散列函数,存放记录的数组称作散列表

本质上来说是个数组,实现哈希表的两种方式:
  • 数组+链表
  • 数组+二叉树

一般数组里存放的是单一的数据,而哈希表中存放的是键值对

数据经过散列函数计算之后,放到特定的位置

entry就是键值对,只是不同的叫法

哈希冲突

数据经过散列函数计算之后,指定在同一个位置上,就是哈希冲突

处理哈希冲突
1.开放寻址法

当计算出来的位置已经有数据了,就顺着位置往后找没有数据的位置放数据

2.拉链法

在原来的entry中额外保存一个next指针,指向数组的另外一个位置放置新数据

哈希表的扩容

当哈希表被占用的位置比较多的时候,出险冲突的概率也就变高了,就会进行扩容

\color{red}{注意:}哈希表的扩容不是简单的扩大,而是新创建一个数组是原来的2倍,然后把原来数组的所有entry都重新经过新的哈希函数计算一边再存放到新的位置上

哈希表如何读取数据
  • 通过key利用哈希函数得出位置,然后去对应位置拿出数据,比较key,如果不对则根据next对比下一个位置的key
  • 开放寻址法则是按顺序去下一个位置对比

参考:一文搞定哈希表

相关文章

  • iOS笔记-哈希表

    什么是哈希表? 哈希表也叫散列表,是一个根据键(key)直接访问在内存存储位置的数据结构 通过计算一个关于键值的函...

  • 数据结构和算法

    1.哈希表哈希算法详解(附带 iOS 开发中实际应用) 2.链表iOS 数据结构之链表

  • 并发编程中的数据结构

    '高性能C++编程分享'笔记 哈希表 散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内...

  • Java数据结构_哈希表_基本概念

    本文目标 哈希表的基本概念,哈希冲突,哈希函数 什么是哈希表 哈希表也叫做散列表(hash有剁碎的意思)哈希表是空...

  • redis数据结构--字典

    Redis的字典底层就是哈希表。 哈希表 首先给出哈希表的定义: 其中可以看到,table是一个哈希表节点的数组,...

  • 哈希表和链表

    优秀文章:Chapter: 散列表(哈希表) 一、哈希表 哈希表hashtable(key,value) 就是把K...

  • 算法-哈希表算法总结

    1 哈希表模拟 思路:通过设计哈希表,模拟O(1)时间复杂度的哈希表。 2 数组作为哈希表 思路:数组就是简单的哈...

  • 数据结构 -- 哈希表及其应用

    这篇主要用来记录一下学习到的关于哈希表的知识点。 文章结构 哈希表 哈希表的定义 哈希表的优缺点 哈希碰撞 负载因...

  • 数据结构与算法(第一季):哈希表(Hash Table)

    一、哈希表(Hash Table) 1、概念 哈希表也叫做散列表。 哈希表的原理: 利用哈希函数生成key对应的i...

  • 深入理解哈希表

    深入理解哈希表 深入理解哈希表

网友评论

      本文标题:iOS笔记-哈希表

      本文链接:https://www.haomeiwen.com/subject/obwkyrtx.html