散列表查找概述
2014-09-10 21:29
218 查看
文章转载自:www.cnblogs.com/zhuyf87/archive/2012/12/16/2820486.html
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。
对不同的关键字可能得到同一散列地址,即key1≠key2,而f(key1)=f(key2),这种现象称碰撞(collision)。具有相同函数值的关键字对该散列函数来说称做同义词(synonym)。
根据散列函数和处理碰撞的方法将一组关键字映射到一个有限的连续的地址集(区间)上。这一映射过程称为散列造表或散列,所得的存储位置称为散列地址。
若对于关键字集合中的任一个关键字,经散列函数映射到地址集合中任何一个地址的概率是相等的,则称此类散列函数为均匀散列函数(Uniform Hash function),这就是使关键字经过散列函数得到一个“随机的地址”,从而减少碰撞。
整个散列过程其实就是两步。(1)在存储时,通过散列函数计算记录的散列地址,并按此散列地址存储该记录;(2)在查找时,通过同样的散列函数计算记录的散列地址,按此散列地址访问该记录。所以说,散列技术既是一种存储方法,也是一种查找方法。
散列技术最适合的求解问题就是查找与给定关健值对应的记录。不过散列表不适合范围查找,比如查找一个班级18-22岁的同学,在散列表中没法进行。想获得表中记录的排序也不可能,像最大值、最小值等结果也都无法从散列表中计算出来。
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。
对不同的关键字可能得到同一散列地址,即key1≠key2,而f(key1)=f(key2),这种现象称碰撞(collision)。具有相同函数值的关键字对该散列函数来说称做同义词(synonym)。
根据散列函数和处理碰撞的方法将一组关键字映射到一个有限的连续的地址集(区间)上。这一映射过程称为散列造表或散列,所得的存储位置称为散列地址。
若对于关键字集合中的任一个关键字,经散列函数映射到地址集合中任何一个地址的概率是相等的,则称此类散列函数为均匀散列函数(Uniform Hash function),这就是使关键字经过散列函数得到一个“随机的地址”,从而减少碰撞。
整个散列过程其实就是两步。(1)在存储时,通过散列函数计算记录的散列地址,并按此散列地址存储该记录;(2)在查找时,通过同样的散列函数计算记录的散列地址,按此散列地址访问该记录。所以说,散列技术既是一种存储方法,也是一种查找方法。
散列技术最适合的求解问题就是查找与给定关健值对应的记录。不过散列表不适合范围查找,比如查找一个班级18-22岁的同学,在散列表中没法进行。想获得表中记录的排序也不可能,像最大值、最小值等结果也都无法从散列表中计算出来。
相关文章推荐
- 散列表查找概述
- 数据结构 学习笔记(完):散列查找:散列(哈希)表,散列函数的构造,冲突处理,性能分析
- 散列表查找(哈希表)知识点
- 散列表概述
- 查找算法(II)散列查找 哈希表 Hash
- 散列表查找
- 【数据结构】查找:散列技术
- 查找概述_legend
- 查找之散列查找(哈希表)
- 黑马程序员——数组概述+数组排序+数组查找-第5天
- 二分查找概述
- 数据结构——线性表——散列存储结构——哈希表知识点总结 原创 2017年05月14日 10:08:40 散列(hashing)是一种重要的存储方法,也是一种常见的查找方法。 基本思想:以结点的
- 闭散列表的查找、插入和删除操作的完整C代码
- 算法--查找--散列表查找
- 散列表的查找
- 基于CRC20散列的百万账号快速查找模拟
- 查找算法总结:顺序查找,二分查找,分块查找,散列查找,二叉排序树查找
- 数据结构基础8:散列查找(哈希查找)
- 数据结构(陈越)PAT练习题 第九周:散列查找
- 数据结构复习之散列表查找(哈希表)