美文网首页
哈希表(Hash Table)

哈希表(Hash Table)

作者: 东南枝下 | 来源:发表于2021-01-11 23:41 被阅读0次

    哈希表,又称散列表,一种数据结构设计出来用于存放数据。

    哈希表是一个数组,数组里放的是一个指针,指针指向的是存放的数据。

    之所以叫哈希表,是因为有一个哈希函数用于计算数组的下标。

    通过哈希函数将数据的关键字计算为数组的下标,再将该数据的指针存放在该数组里。

    例,如下图:


    图片.png

    不同的数据关键字哈希函数计算出来的下标重复怎么办??

    1. 链表式解决
      写入结构体时加入next指针,遇到冲突时加入到同样下标的next位置
    图片.png
    1. 开放地址

    2.1. 线性探测法

    如果遇到冲突,就往下一个位置寻找空位
    新位置 = 原始位置 + i (i 是查找的次数)

    2.2. 平方探测法(二次方探测法)

    如果遇到冲突,就往(原始位置+i^2)寻找空位
    新位置 = 原始位置 + i ^2(i 是查找的次数)

    2.3. 双哈希

    需要设置第二个哈希函数,在遇到冲突时使用
    新位置 = 原始位置 + i *hash2(关键字)

    哈希表满了怎么办?

    单哈希表数据超过70%就建一个旧表尺寸2倍以上的新哈希表,把之前的数据再次通过哈希函数计算记录到新表里

    课代表笔记,知识来源:https://www.bilibili.com/video/BV1MC4y1p7rP

    相关文章

      网友评论

          本文标题:哈希表(Hash Table)

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