【C++:哈希】

目录

哈希概念

哈希冲突

如何解决哈希冲突?

闭散列

开散列/哈希桶(链地址法)

负载因子


哈希概念

哈希:

  1. 一种高效用来搜索的数据结构。
  2. 哈希利用某一种函数使元素的存储位置与它的关键码之间建立一个映射关系,方便查找元素。
  3. 哈希中建立这种映射关系的函数叫做哈希函数,也叫做散列函数。
  4. 散列函数就是计算元素在哈希中所存储的位置,通过该函数来存放元素。

    小例子:手机通序录对联系人的分配,通讯录根据人名的首字母对联系人进行分类存储。这种就是哈希存储。通序录通过名字的首字母与联系人之间产生一种映射关系

哈希冲突

  1. 哈希的底层是一个数组实现的,叫做哈希表(散列表)
  2. 通过哈希函数计算元素在哈希中存储的下标
  3. 不可避免的的是,哈希函数计算出来的存储位置很有可能会与之前计算出来的其他元素的存储位置一样,但该位置不为空,这种现象叫做哈希冲突。

如何解决哈希冲突?

  • 闭散列

从发生哈希冲突的位置开始查找“下一个”空位置,俩种查找方式:

  1. 线性探测:从发生哈希冲突的位置接着往下查找,如果查找到末尾也没有发现空位置就会哈希表的起始位置继续查找,找到

你可能感兴趣的:(c++,哈希算法,算法)