龙空技术网

哈希表(散列表)

香樟琳 121

前言:

今天姐妹们对“散列表哈希算法源码”可能比较关怀,你们都想要了解一些“散列表哈希算法源码”的相关内容。那么小编也在网上汇集了一些关于“散列表哈希算法源码””的相关文章,希望小伙伴们能喜欢,我们快快来了解一下吧!

定义:给定表M,存在函数f(key),对任意给定的关键字key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。什么是散列?为什么需要散列?散列是一种思想。与已经学过的其他数据结构相比较,向量是采用循秩访问(call by rank)的访问方式,列表是采用循位置访问(call by position)的访问方式,二叉搜索树是采用循关键码访问(call by key)的访问方式,散列与他们都不一样,是采用循值访问(call by value)的访问方式。举个例子,你现在身处哪里也不是的场所的中央,四周一片沉默,仿佛全世界所有细雨落到全世界所有草坪上,这个时候你想回家了。沿世界上所有的街道一间一间房找过去,这是循序访问;你记得你家是住在某省某市某街道多少号,然后你可以依次先到某省,再到某市,再到某条街道,然后找到你家,这是循关键码访问;而循值访问,则是你通常会采用的方法——你根本不用去回想我家的地址是多少,你知道它就在那里,就在家这个词刚刚出现在你的脑海中的时候。想到家乡,你想到的不是地址或者一串数字,而是一个生动的影像,包含它的环境,四周的风物,以及曾经的朋友。这就是循值访问。 可以看到,相对于其他的访问方式,循值访问是将被访问对象的数值,与它在容器中的位置之间,直接建立了一个映射关系,从而对于任何对象的基本操作(访问,插入,删除)都只需要常数O(1)的时间,达到了最理想的境地。这就是人类需要散列的原因,你无法不被如此的诱惑所吸引。散列表概念散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置(该位置称为槽(slot),用来保存数据项,每个槽有一个唯一的名称。每个位置都有一个编号,也叫索引)来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

标签: #散列表哈希算法源码