• 计算机核心基础之散列表HashTable讲解·15


    • 什么是散列表
      • 散列表(Hash table、也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找到速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
      • 给 定表M,存在函数f(key)、对任意给定的关键字值key、代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash)函数
    • 散列函数 能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快的定位。
     
    • 链式哈希表
      • 是有一组链表构成、每个链表都可以看作一个桶、我们将所有的元素通过散列的方式放到具体的不同的桶中。
      • 插入元素时,首先将其键传入一个哈希函数、函数通过散列的方式告知元素属于哪个“桶”,然后在相应的链表(桶)插入元素
      • 查找或者删除元素时,用同样(散列)的方式先找到元素的桶(链表),然后遍历对应的链表,直到发现我们想要的元素。
    • 注意:
      • 因为每个“桶”都是一个链表、如果表变得太大、它的性能将会降低
      • 哈希扩容:Bucket桶不够的话需要重新扩容、历史的数据需要重新哈希(Hash)
      • 哈希冲突碰撞:不同的元素经过hash后命中相同的位置
    Bug? 不存在的!
  • 相关阅读:
    c++ 中pair类模板的用法详解
    求解Catalan数,(大数相乘,大数相除,大数相加)
    POJ--2823--Sliding Window----单调队列问题
    POJ2796 Feel Good -- 单调队列
    Graham扫描法 --求凸包
    山东理工大学第七届ACM校赛-G 飞花的传送门
    NKOJ1236 a^b (数论定理的应用)
    大数相减 C语言
    SPFA ----模板 O(kE) (k一般不超过2)
    C++大数相加
  • 原文地址:https://www.cnblogs.com/mrchenyushen/p/15431291.html
Copyright © 2020-2023  润新知