为什么哈希表能够加快查找效率?

1人阅读 评论(0) 收藏 举报

很多语言都提供map的数据类型,map一个很常用的功能,那就是key-value的存储和查找功能。这种数据类型的实现原理就是通过哈希表来实现快速查找。

 

哈希表的基本原理:原本无序的集合经过哈希算法被重新调整位置,排列成新序列,也就是hashtable(与其说是表,不如说是某种数据结构的数组)。

以某string集合为例,如图:

原始序列  hash算法   关键字   取模(10)   重排后的数组(somestructurea[])

string1------------>>  24  ----->>4  --------->>a[4] 

string2------------>>  2940 ---->>0  --------->>a[0]

string3------------>>  598  ---->>8  --------->>a[8]

string4------------>>  97  ----->>7  --------->> a[7]

 

此处hash算法其实包括了两部分,(1)把字符串压缩成一个整数关键字(2)对关键字取模,将2^32的整数范围压缩成10。当然由于压缩率太大,所以发生冲突的概率是很高的,实际问题的解决中不会采用这么大的压缩率。如果有冲突,参见哈希表如何解决冲突

 

ok,现在来了一个新的元素string_x,我们要判断此元素是否在先前的string集合中。那么:

addr = hash(string_x)

if(a[addr].data==string_x)

     return1;//找到了

else

    ruturn 0;//没找到

查看评论

理解哈希表及其查找

以上讨论的查找方法,由于数据元素的存储位置与关键码之间不存在确定的关系,因此,查找时,需要进行一系列对关键码的查找比较,即“查找算法”是建立在比较的基础上的,查找效率由比较一次缩小的查找范围决定。理想...
  • zxh2075
  • zxh2075
  • 2016-10-12 13:37:25
  • 1584

为什么使用了哈希算法的字典查集合找速度比全局遍历字典查集合速度快?

我们都使用过字典,如英汉字典、成语字典,图书的检索目录、电话簿等也可以看作广义上的字典。在计算机科学中,把字典也当成一种数据结构。 我们把字典定义为“键- 值对” (Key-Value Pair) 的...
  • qianlima210210
  • qianlima210210
  • 2015-08-03 14:35:36
  • 2433

哈希表存储效率50%的原因

哈希表最大的优点在于查找速度快,但其存在collision(冲突)
  • Max_R
  • Max_R
  • 2014-07-03 10:43:06
  • 1823

​ 散列表查找性能分析总结

散列表,也叫哈希表,英文名是HashTable。是数据结构里面“查找”目录下的一个子知识点。如果散列表没有冲突,则散列查找是我们介绍的所有查找效率最高的。因为散列查找时间复杂度是O(1)。可惜的是,没...
  • woshilingdaoren
  • woshilingdaoren
  • 2015-12-28 22:59:47
  • 828

哈希表存储效率一般不超过50%

Hash Table 常用于频繁进行 key/value 模式的查找中。(查找模式,如匹配查找)   哈希表最大的优点在于查找速度快,但存储时可能发生collision(冲突)。 ...
  • gettogetto
  • gettogetto
  • 2016-10-01 14:28:08
  • 418

哈希算法为什么存取速度快?

哈希算法存取之所以快,是因为其 直接通过关键字key得到要存取的记录内存存储位置 试想这样的场景,你很想学太极拳,听说学校有个叫张三丰的人打得特别好,于是你到学校学生处找人,学生处的工作人员可能...
  • u012441545
  • u012441545
  • 2016-08-06 23:04:09
  • 2037

哈希查找效率及应用场景

哈希查找效率及应用场景
  • zhailihua
  • zhailihua
  • 2017-10-26 18:19:22
  • 173

trie树与hash表的查找速度对比

#include #include #include #include #include "trie_tree.h"using namespace std;int trie_null(void * v...
  • Scythe666
  • Scythe666
  • 2016-07-25 14:24:56
  • 1110

二分法与hash表的查找性能比较总结

今天我测试了一下二分法与hash表的查找性能,我就谈一下查找的性能,先不考虑插入的性能。先说说hash表吧,它的查找性能是和数据量成正比的,也就是数据量越大查找的越慢。二分法查找,查找字符串和hash...
  • tianping168
  • tianping168
  • 2008-05-30 15:30:00
  • 2036
    个人资料
    等级:
    访问量: 2万+
    积分: 519
    排名: 9万+
    文章分类
    最新评论