扩容为什么每次都是扩大2倍,或者说为什么容量是2的幂次

  1. 效率高:将容量扩大为原来的两倍,可以通过简单的位运算(左移1位)来计算新的哈希桶的索引,而不需要进行复杂的计算。这样可以提高扩容的效率。

  2. 均匀分布:哈希表的性能与哈希桶的负载因子(即每个桶中元素的平均数量)有关。当容量选择为2的幂次时,哈希函数的取模运算可以简化为位运算(与操作),这样可以保证哈希桶的索引在扩容前后的分布是均匀的,减少了哈希冲突的概率。

  3. 内存利用率高:容量选择为2的幂次时,可以通过位运算来计算哈希桶的索引,而不需要使用取模运算。取模运算通常使用除法操作,而除法操作在计算机中的实现相对较慢。此外,容量选择为2的幂次时,哈希桶的数量是固定的,不会出现浪费内存的情况。

你可能感兴趣的:(面试题,哈希算法,算法)