基础概念
和顺序表一样,散列表也是用来存储数据的;和顺序表不同的是,散列表优化了查找数据的操作,使得在对通过散列表进行存储的数据进行查找的开销大大降低。在散列表中,我们用键值指代我们需要进行保存的数据,用散列地址表示存储的位置,用散列函数指代通过键值确定存储位置或者通过存储位置确定键值的映射关系(散列)。
构造方法
我们在进行散列函数的构造时,需要考虑将需要存储的数据均匀的分配到存储地址中,避免出现冲突。冲突是两个及两个以上的数据的存储位置相同的一种现象,这些相同的数据我们称之为相对于该散列函数的同义词。下面简单介绍几种常用的构造方法供大家参考。
除留余数法
除留余数法就是选取一个不大于表长的数值p做被除数,然后将带存储的数据依次除以这个数值p,取运算的余数作为该数值在散列表中的存储位置。这种方法产生冲突的原因是p值选取的不恰当,使得存储数据中一个以上的数据除以p后产生的余数一样,导致存储位置相同。一个比较好的解决办法是在选取p值时&#