蝉的哲学

蝉的生命周期为13年或17年,却很少有14、15或16年,为什么呢?蝉是弱势群体,有很多天敌,选择素数作为其生命周期能最大减少与其天敌们共存的时间,增加自己的存活率,这也是自然选择的结果。

一、散列函数

散列函数即是将元素映射到对应槽位置的方法。

除法散列法 :h(k) = k mod m

通过取 k 除以 m 的余数,将关键字 k 映射到 m 个槽上。
从蝉的哲学中获得启示,将哈希取余的基底选择为素数最大减少哈希冲突情况的发生,使哈希分布更均匀

二、实例分析

  1. 数列A:1,3,5,7,9,11,13,15
    假设选取 8 取模,结果为:
    在这里插入图片描述
    每个数间隔 2,2 是 8 的一个因数,容易发生冲突,不均匀分布。
    假设选取 7 取模,结果为:
    在这里插入图片描述
    每个数间隔 2,2 不是 7 的因数,均匀分布。

三、题目

一散列表长度m为100,采用除留余数法构造散列函数,即H()=K%P(),,为使散列函数具有较好的性能,P的选择应是()。
A、99
B、100
C、97
D、93

答案:c
分析:应选择与100最近的最大素数,故97为最佳。