0
我想到了一個很好的散列函數,可以自動排序一堆單詞。是否有可能使一個字典排序的散列函數
也許它可以通過每個字母的所有ASCII值的總和來完成。
int hash(char *str){
int i,value=0;
for (i=0;i<strlen(str);i++)
value=value+(str[i]%97);
return value;
}
但是那麼這將導致大量的碰撞,因爲,例如:3 + 5 = 8 + 0 = 7 + 1 = 6 + 2 ...等
它甚至有可能哈希函數來做到這一點?如果是這樣,那怎麼可能?
不幸的是,這樣「bz」會出現在「za」之後.. – user1620443
這是一個壞主意,因爲有序值空間與哈希的目的相矛盾。分別做兩件事... –
好吧,考慮一下。爲了這個工作,你的散列函數必須爲任何兩個不同的字符串產生不同的值。如果一個字符串由8位字符組成,那麼有多少個不同的4個字符串? 8點怎麼樣?你在這裏看到這個問題嗎? – Cubic