1. 累加
先考虑一个简单的例子,数组表示十进制数的每一位,将数组转化为整数形式:
∑i=0n−1num[n−1−i]⋅10i
for (int i = 0; i < n; ++i)
x = (x * 10 + num[i]);
再考虑一个相对复杂的情况:
∑i=0n−1Key[n−1−i]⋅32i
Index Hash(const char* Key, int TableSize){
unsigned int HashVal = 0;
while (*Key != '\0'){
HashVal = (HashVal << 5) + *Key++;
}
return HashVal % TableSize;
}