導讀您好,現在冰冰來為大家解答以上的問題。hash算法,hash算法相信很多小伙伴還不知道,現在讓我們一起來看看吧!1、有一點你搞錯了。2、Hash算...
您好,現在冰冰來為大家解答以上的問題。hash算法,hash算法相信很多小伙伴還不知道,現在讓我們一起來看看吧!
1、有一點你搞錯了。
2、Hash算法不是為了快速找出相同的元素,而是為了快速判斷兩個元素不相等。
3、所有散列函數都有如下一個基本特性:如果兩個散列值是不相同的(根據同一函數),那么這兩個散列值的原始輸入也是不相同的。
4、這個特性是散列函數具有確定性的結果。
5、但另一方面,散列函數的輸入和輸出不是一一對應的,如果兩個散列值相同,兩個輸入值很可能是相同的,但并不能絕對肯定二者一定相等。
6、例如:設計一個針對字符串的Hash算法,簡單地返回字符串的首字母:def Hash_string(str): return str[0]那么:Hash_string(a)=Hash(gfdgfd)=gHash_string(b)=Hash(xzcfs)=x這樣就可以最快速地判斷出兩個字符串不相等。
7、這個Hash算法常用于將大量文件分散存儲。
8、對于首字母相同的兩個字符串,本算法得到的Hash值肯定相同,這就是出現了命中沖突。
9、解決命中沖突有很多策略,比如:再散列法、鏈地址法、公共溢出法……等等。
10、一個好的Hash算法,應該保證高命中率和均勻分布。
本文就為大家分享到這里,希望小伙伴們會喜歡。