博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
散列表查找概述
阅读量:6933 次
发布时间:2019-06-27

本文共 723 字,大约阅读时间需要 2 分钟。

散列表(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岁的同学,在散列表中没法进行。想获得表中记录的排序也不可能,像最大值、最小值等结果也都无法从散列表中计算出来。

转载地址:http://abgjl.baihongyu.com/

你可能感兴趣的文章
Java学习之深拷贝浅拷贝及对象拷贝的两种方式
查看>>
如何根据动态SQL代码自动生成DTO
查看>>
html input="file" 浏览时只显示指定文件类型 xls、xlsx、csv
查看>>
Android Export aborted because fatal error were fo
查看>>
在window平台下模拟Liunx使用GCC环境进行编译C的SO库。
查看>>
原来一直纠结MQ的用法,今天看到了一个最经典的例子。
查看>>
Resource is out of sync with the file system的解决办法
查看>>
交叉编译openssl不修改Makefile的方法
查看>>
linux 常用流量查看命令
查看>>
VMware ESXi Windows虚拟机磁盘扩展小结
查看>>
Linux常用命令
查看>>
方便的将数字转成字符串类型并在前面补0
查看>>
mysql主从复制
查看>>
宫崎骏首次因为自己的新作流泪
查看>>
SAP sybase16 安装的一些细节问题
查看>>
linux服务器同步时间
查看>>
Android开发常见问题及解决方法
查看>>
Linux 基础 - 磁盘管理 - 01
查看>>
我的友情链接
查看>>
繁忙的IT基础设施可能导致安全灾难
查看>>