我不确定这个前缀哈希方法应该做什么



前缀哈希函数的作用是什么?我已经创建了链,二次和线性哈希表。我给出了简单,前缀和全长哈希方法,我不确定它们是用来做什么的?

代码如下:

int HashTable_qp::preHash(string & key, int tableSize )
{
    string pad = "AA";
    //some words in the input are less than 3 letters
    //I choose to pad the string with A because all padded characters 
    //have same ascii val, which is low, and will hopefully alter the results less
    if (key.length() < 3)
    {
        key.append(pad);
    }
    return ( key[0] + 27 * key[1] + 729 * key[2] ) % tableSize;
}

碰撞检测:

while(i != DataArray.size())
{
    tStart = clock();
    if(QuadraticProbingHT.preHash(DataArray[i],101) == QuadraticProbingHT.preHash(DataArray[i],101) )
    {
        collision_count++;
    }
    tStop = clock();
    total_c += tStop - tStart;
    i++;
}

前缀哈希按字符串的前几个字符(前缀)对字符串进行哈希。

请注意,在你给出的实现中,它使用前三个字符对字符串进行散列(如果存在;如有必要,它将填充AA)。因此,assassociate在这个特定的前缀哈希下具有相同的哈希值。

全长散列使用字符串中的每个字符来确定散列值。

最新更新