什么是哈希表?什么又是哈希冲突?哈希冲突的解决方法?
首先,什么是哈希表?什么又是哈希沖突?
①哈希表是基于數組的一種存儲方式.它主要由哈希函數和數組構成。當要存儲一個數據的時候,首先用一個函數計算數據的地址,然后再將數據存進指定地址位置的數組里面。這個函數就是哈希函數,而這個數組就是哈希表。
②哈希沖突是指哈希函數算出來的地址被別的元素占用了,也就是,這個位置有人了。好的哈希函數會盡量避免哈希沖突。
那么發生了哈希沖突,要怎么解決呢?
解決哈希沖突有以下幾種方法:
①開放定址法:
這種方法也稱再散列法,其基本思想是:當關鍵字key的哈希地址p=H(key)出現沖突時,以p為基礎,產生另一個哈希地址p1,如果p1仍然沖突,再以p為基礎,產生另一個哈希地址p2,…,直到找出一個不沖突的哈希地址pi ,將相應元素存入其中。這種方法有一個通用的再散列函數形式:
Hi=(H(key)+di)%m i=1,2,…,n
其中H(key)為哈希函數,m 為表長,di稱為增量序列。增量序列的取值方式不同,相應的再散列方式也不同。
②再哈希法:
這種方法是同時構造多個不同的哈希函數: Hi=RH1(key) i=1,2,…,k
當一個哈希函數地址還產生沖突時,在計算另一個哈希函數地址,直到不再發生沖突為止。
③鏈地址法
這種方法的是將所有哈希地址相同的元素i構成一個單鏈表,并將單鏈表的頭指針存在哈希表的第i個單元中,因而查找、插入和刪除主要在單鏈表中進行。鏈地址法適用于經常進行插入和刪除的情況。
④建立公共溢出區
這種方法就是將哈希表分為基本表和溢出表兩部分,凡是和基本表發生沖突的元素,一律填入溢出表,比較粗暴。
總結
以上是生活随笔為你收集整理的什么是哈希表?什么又是哈希冲突?哈希冲突的解决方法?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 016四元数微分方程
- 下一篇: 适合日常养生的中药有哪些?恒修堂给你答案