stper** pages;
int tableSize;
struct Person{
string name;
int age;
string homeTown;
};
void fonk1 (int numberOfBuckets)
{
pages = new stper*[numberOfBuckets]();
tableSize = numberOfBuckets;
}
int hashPerson(Person& person)
{
int hashVal = 0;
for (int i=0; i < (person.getName()).length() ; i++)
hashVal = 37*hashVal + (person.getName())[i];
for (int i=0; i < (person.getHomeTown()).length() ; i++)
hashVal = 37*hashVal + (person.getHomeTown())[i];
hashVal+= person.getAge();
hashVal %= tableSize;
if(hashVal < 0)
hashVal += tableSize;
return hashVal;
}
大家好,我是哈希的新手。我的散列函數在hashPerson函數的上面,你可以看到有三個關鍵字。我的函數是一個很好的哈希算法,我該如何改進函數並減少碰撞次數? (請忽略,如果有任何語法錯誤)如何提高我的哈希算法
到目前爲止,散列函數有什麼問題?你有什麼理由懷疑你需要改變它嗎? – templatetypedef
你的散列函數很好。但是你使用C++,爲什麼不使用stl? –
我只想知道我是否可以改進它,但我不知道它是否是一個好功能。 – peaceman