散列表(Hash table)
来源:互联网 发布:java 设置特定时间 编辑:程序博客网 时间:2024/04/30 07:49
散列方法不同于顺序查找、二分查找、二叉排序树及B-树上的查找。在理的情况下,无须进行任何比较就可以找到待查关键字,查找的期望时间为O(1)。
1.散列表的基本概念
散列是一种重要的存储方法,也是一种常见的查找方法。
散列表的基本思想是:
以结点的关键字K为自变量,通过一个确定的函数(映射)关系h,计算出对应的函数值h(k),然后把这个值解释为结点的存储地址,将这个结点存入h(k)所指的存储地址上。在查找时,根据要查找的关键字用同一函数h计算出地址,再到相应的单元里去取要找的结点。因此,散列表又称为关键字-地址转换法,用散列方法存储的线性表成为散列表(Hash table),又称为哈希表、杂凑表。上述函数h成为散列函数,h(k)成为散列地址。
通常散列表的存储空间是一个一维数组,散列地址是该数组的下标。在不致引起混淆的情况下,将这个一维数组简称为散列表。
2.散列表的冲突现象
两个不同的关键字,由于散列函数值相同,因而被映射到同一表位置上,该现象称为冲突(Collision)或碰撞。发生冲突的两个关键字称为该散列函数的同义词(Synonym)。
冲突不可能完全避免。只能做到在设计h时尽可能使冲突最少,同时还需要确定解决冲突的方法,使发生冲突的同义词能够存储到散列表中。
3.解决冲突的方法
(1)开放地址法
(2)拉链法
4.散列函数的构造方法
(1)散列函数的选择
散列函数的选择有两条标准:①简单、②均匀
(2)常见的散列函数
①平方取中法
②除留余数法
③相乘取整法
④随机函数法
- 散列表(hash table)
- 散列表(Hash table)
- 散列表(Hash Table)
- 散列表 hash table
- 散列表 - Hash Table
- 散列表(Hash Table)
- 算法导论---------------散列表(hash table)
- 哈希表(散列表 Hash Table)
- hash table 哈希表(散列表)
- (原创)散列表 hash table
- 算法导论之散列表(哈希表)详解(hash table)
- 数据结构—散列表(Hash table,也叫哈希表)
- 数据结构与算法____散列表(hash table)
- hash table——散列表
- Lisp语言:散列表(hash table)
- 散列表(Hash Table)全解析
- Lisp语言:散列表(hash table)
- 数据结构之---散列表(hash table)
- Caused by: java.lang.ClassNotFoundException: org.aopalliance.intercept.MethodInterceptor
- 多线程-线程控制之加入线程
- java常用视频资料汇总
- 【BZOJ】3036 绿豆蛙的归宿 期望DP
- Java微信支付开发之公众号支付(微信内H5调起支付)
- 散列表(Hash table)
- 聊聊左闭右开区间
- vim多文件复制粘贴
- 53 C语言逻辑运算符
- 【Redis】redis两种备份方式
- BZOJ3672: [Noi2014]购票 树分治 斜率优化
- [速成]了解一致性hash算法
- android studio快捷键使用
- 大话设计模式阅读笔记-装饰模式