散列表(has table哈希表)

Posted codingcz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了散列表(has table哈希表)相关的知识,希望对你有一定的参考价值。

一. 散列表是什么

 是包含映射关系的一种数据结构,可以提高查找效率。

二. 散列函数

 1)必须是一致的。假设输入一个单词“banana”,映射的数字是1,那么以后每次输入banana都要映射到数字1,否则散列表就没用处了。

 2)应该把不同的输入映射到不同的输出。如果无论什么输入都映射输出数字1,那么就不是好的散列函数。理想的情况是,任何一个输入,都有独一无二的映射输出。

三. 冲突

 将不同的键映射到不同的位置,实际上没有这样的散列函数可以一步到位。这就会导致冲突,也就是不同的键,映射到了同一个位置。怎么办呢?办法很多,这里说一个:如果两个键映射到了同一个位置,那么就在这个位置建一个链表,依次存储键值对。当然,这也不是完美的办法:假设有一串字母a开头的单词,它们分别对应不同的数值,但他们映射的位置却都是一样的,那么结果就是在内存的一个固定位置上建立了一个很长的链表,这样的话查找起来仍然效率不高。所以,对于散列函数,要注意:

    1)理想的散列函数可以把键均匀的映射到散列表的不同位置。

  2)理想的散列函数会使得在一个位置建立起来的链表不会变得不可接受的长。

以上是关于散列表(has table哈希表)的主要内容,如果未能解决你的问题,请参考以下文章

数据结构 -- 哈希表(hash table)

用Hash Table(哈希散列表)实现统计文本每个单词重复次数(频率)

哈希表(Hash Table)与哈希算法

学习数据结构笔记 ---[哈希表(Hash table)]

哈希表/散列表

操作系统 之 哈希表 Linux 内核 应用浅析