本篇哈希表的扩容策略,主要讨论扩容时如何计算扩容大小的问题。
第一种方法是:扩容大小应当保持是2的幂。
第二种方法是:扩容大小应当是一个素数。
“2的幂”策略
计算机的运算当中,位运算的速度是快于取余运算的。而在哈希表中,我们常见的关键字与哈希表的转换,是取关键字对哈希表长度取余。
所以伴随“2的幂”策略,使用位运算(例如“&”运算)取余 可以获得运算速度上的提升。
“素数”策略
当采用“素数”策略时,通过位运算取余显然已不可取。
但是利用取余运算时,由于素数作为哈希表的长度,可以 产生最分散的余数,从而尽可能减小哈希冲突。
网友评论