本文主要是介绍自考路之散列表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景:之前介绍了《软考路之线性表》,在顺序表和树表中查找数据元素要进行一系列的键值比较过程。为了使数据元素的存储位置和键值之间建立某种联系,以减少比较次数,现在介绍用散列表技术实现动态查找表。
一、散列表
数据元素的键值和存储位置之间建立的对应关系H称为散列函数,用键值通过散列函数获取存储位置的这种存储方式构造的存储结构称为散列表(Hash Table),这一映射过程称为散列。
如果选定了某种散列函数H及相应的散列表L,则对每个数据元素X,函数值H(X.key)就是X在散列表L中的存储位置,这个存储位置也称为散列地址。
散列文件是一种计算寻址文件。
二、常用散列法
1、数字分析法
又称为数字选择法,其方法是收集所有可能出现的键值,排列在一起,对键值的每一位进行分析,选择分布较均匀的若干位组成散列地址。
所取的位数取决与散列表的表长,见表长为100,则取2位即可。
假定已知可能出现的所有键值如下:
对所有的键值分析不能看出,左起前三位都是“7 1 2”,第五位只能取1、4,第七位只能取6、7、8、,故这五位都不可取。剩下的第4、6、8、9位都是分布比较均匀的,可考虑将它们或它们中的几位组织起来作为散列地址。
这篇关于自考路之散列表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!