哈希法中為什么會出現(xiàn)沖突 什么是哈希法?哈希法中為什么會出現(xiàn)沖突?
什么是哈希法?哈希法中為什么會出現(xiàn)沖突?哈希計算就是努力的把比較大的數(shù)據(jù)存放到相對較小的空間中。最常見的哈希算法是取模法。下面簡單講講取模法的計算過程。比如:數(shù)組的長度是5。這時有一個數(shù)據(jù)是6。那么如
什么是哈希法?哈希法中為什么會出現(xiàn)沖突?
哈希計算就是努力的把比較大的數(shù)據(jù)存放到相對較小的空間中。最常見的哈希算法是取模法。下面簡單講講取模法的計算過程。比如:數(shù)組的長度是5。這時有一個數(shù)據(jù)是6。那么如何把這個6存放到長度只有5的數(shù)組中呢。按照取模法,計算6%5,結(jié)果是1,那么就把6放到數(shù)組下標(biāo)是1的位置。那么,7就應(yīng)該放到2這個位置。到此位置,哈斯沖突還沒有出現(xiàn)。這時,有個數(shù)據(jù)是11,按照取模法,11%5=1,也等于1。那么原來數(shù)組下標(biāo)是1的地方已經(jīng)有數(shù)了,是6。這時又計算出1這個位置,那么數(shù)組1這個位置,就必須儲存兩個數(shù)了。這時,就叫哈希沖突。沖突之后就要按照順序來存放了。如果數(shù)據(jù)的分布比較廣泛,而且儲存數(shù)據(jù)的數(shù)組長度比較大。那么哈希沖突就比較少。否則沖突是很高的。具體的算法你要參照更加專業(yè)的書籍。