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