哈希表

今天做华硕的笔试题时,有道题是介绍哈希表和实现它的几个算法,虽然以前查过相关知识,但只是大概理解。

哈希表的概念

哈希表(Hash Table)也叫散列表,是根据关键码值(Key Value)而直接进行访问的数据结构。它通过把关键码值映射到哈希表中的一个位置来访问记录,以加快查找的速度。这个映射函数就做散列函数,存放记录的数组叫做散列表。

散列存储的基本思路

以数据中每个元素的关键字K为自变量,通过散列函数H(k)计算出函数值,以该函数值作为一块连续存储空间的的单元地址,将该元素存储到函数值对应的单元中。

哈希表查找的时间复杂度

哈希表存储的是键值对,其查找的时间复杂度与元素数量多少无关,哈希表在查找元素时是通过计算哈希码值来定位元素的位置从而直接访问元素的,因此,哈希表查找的时间复杂度为O(1)。

哈希函数的构造方法

哈希函数的构造方法:
1、直接定址法。取关键字或关键字的某个线性函数值为哈希地址。
即:H(key)=key或H(key)a*key+b
由于直接定址所得地址集合和关键字集合的大小相同,因此,对于不同的关键字不会发生冲突。但是,实际中使用这种方法的情况很少,因为随着关键字的增多,哈希表会变得很庞大。

2、平方去中位法。
取关键字平方后的中间几位为哈希地址。取的位数由表长决定。

3、还有折叠法、数字分析法、除留余数法、随机数法等

处理冲突的方法
1、开放定址法
2、链地址法


参考原文:
http://panlianghui-126-com.iteye.com/blog/968057
http://blog.csdn.net/chenhuajie123/article/details/9210529

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是哈希表? 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数...
    郝程序猿阅读 2,249评论 1 7
  • 语文知识直播间(第四期) ――贾烁然 语文知...
    青春旅程357班阅读 471评论 0 2
  • 年轻的时候,觉得友情和爱情一样,独一无二,眼中无他。长大了发现,友情和爱情一样,可遇不可求。也许在一段旅程中,你是...
    花自花开阅读 179评论 0 0
  • 2016年11月27号 晚上八点半 我在徐州的公交车上,安心。 从早上的5点半到达,下午的4点半的离开。只停留了九...
    桃子酱呀阅读 241评论 0 0
  • 在三个下午的听课,才知道其实经营美乐家的核心是谈判,其实生活中处处在谈判。 在成为美乐家的消费者,后来和爱人玉芳一...
    党宇宝阅读 480评论 0 1