蝉的哲学
蝉的生命周期为13年或17年,却很少有14、15或16年,为什么呢?蝉是弱势群体,有很多天敌,选择素数作为其生命周期能最大减少与其天敌们共存的时间,增加自己的存活率,这也是自然选择的结果。
一、散列函数
散列函数即是将元素映射到对应槽位置的方法。
除法散列法 :h(k) = k mod m
通过取 k 除以 m 的余数,将关键字 k 映射到 m 个槽上。
从蝉的哲学中获得启示,将哈希取余的基底选择为素数能最大减少哈希冲突情况的发生,使哈希分布更均匀。
二、实例分析
- 数列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为最佳。