散列表

作者: yulongsun | 来源:发表于2016-08-28 23:08 被阅读16次

1.散列表

Hash表是一种支持高效的查找,插入,删除操作的数据结构,高效的设计目标是时间复杂度为O(1)

概念:

1. 散列函数:数据元素的关键字和该元素的存储位置之间的对应关系。
                由散列函数觉得存储位置的存储结构称为散列表。
                实质:关键字集合到地址集合到映射。
2.  冲突: 多个关键字 映射到 同一个存储位置;
                         
构造散列表的关键:如何减少冲突 以及 如何有效处理冲突

2.散列函数

好的散列函数的标准: 使散列地址均匀的分布在散列表中,尽量避免或减少冲突。

常用散列函数:
    1.  直接定址法;
    2.  除数取余法;
    3. 平方取中法;
    4.  折叠法:把关键字拆成几部分,按照某种约定把这几部分组合在一起;

3.冲突处理

1. 开放定址法:
    
    设计一个关键字key,散列地址为i=hash(k),若散列表中i的位置已经存储元素,则产生冲突,探测下一个i+1位置是否为空,若空,则存储该元素;否则继续探测下一个位置i+2,以此类推,直到找到一个空的位置。

缺点:使非同义词也产生冲突,并堆积在散列表的一段区域,极速降低查找效率。

2. 链址法

3. 线性探测再散列法

4. 二次线性再散列;

参考博客:
浅谈算法和数据结构: 十一 哈希表 http://www.cnblogs.com/yangecnu/p/Introduce-Hashtable.html

相关文章

  • 散列表

    1.啥是散列表及散列函数? 很多语言都提供了散列表的实现方式,python是用dict{ }来实现 2.有啥优势?...

  • 散列表

    基本概念(非严谨) 散列表:按照思考事物本质以及理想状态的思路,那么散列表从本质来讲就是一个表,而理想的散列表应该...

  • 散列表

    散列表:散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f...

  • 散列表

    转载请注明出处!https://www.jianshu.com/p/e325578eb512 链表实现 Githu...

  • 散列表

    一、定义 散列表(Hash Table,也叫哈希表),是通过把键值映射成整数来作为数组的索引,并进行访问记录的一种...

  • 散列表

    https://blog.csdn.net/pcwl1206/article/details/83582986

  • 散列表

    散列查找法的两项基本工作 计算位置:构造散列函数直接确定关键词存储位置散列函数的设计,主要目的是构造随机性:计算简...

  • 散列表

    散列表是一种基本的数据结构,那么散列表到底是什么样的一种数据结构呢?又有哪些应用场景呢? 假如我们要从一本电话本中...

  • 散列表

    散列表 认识散列表 是 字典(键 、值对)的一种实现方式。每次在字典中获取一个值,都需要重复遍历字典,如果用散列表...

  • 散列表

    散列函数将被查找的键转换为数组的索引 解决冲突的方法:拉链法和线性探测法 将整数散列最常见的方法是除留余数法,通常...

网友评论

      本文标题:散列表

      本文链接:https://www.haomeiwen.com/subject/yilxettx.html