多项式散列函数是否有效?

时间:2015-11-25 16:29:46

标签: performance data-structures hash hashtable hashcode

我想知道为什么没有谈论多项式散列函数的效率(在时间和空间方面)?我书中常量的推荐值是33,37,39和41,但它们的数字相当大。如果我的字符串是15 a(aaaaaaaa ..)那么计算(41 ^ 15)(97)+(41 ^ 14)(97)+ ...... (97因为它的ASCII值为a)是如此繁重的任务,如果我百万条目那么你可以想象。所以,任何人都可以回答我的两个问题吗?

  1. 我是否误解了这个函数的时间和空间复杂性,或者我对它的理解是否正确?

  2. 如果我是对的,为什么我们需要使用它?我们能找到其他更有效的替代方案吗?

1 个答案:

答案 0 :(得分:1)

它的实现方式如下:

int h=0;
foreach (character c in string)
{
    h = (h*41)+c;
}
return h;

正如你所看到的,它没有太大的空间而且非常快。