'哈希表、哈希函數、哈希衝突與解決'

數據結構 程序員小七 2019-08-08
"

細心的小夥伴們估計已經發現我現在很多表都開始用圖片了,這是因為我頭條這裡格式的問題,我放上去還得改半天,太麻煩,還不好看,所以就直接弄好表截圖放上來了

哈希表:通過關鍵碼來映射到值的一個數據結構;

哈希函數:鍵與值映射的一個映射關係;

哈希函數的構建:

常用方法:

1、直接尋址法:f(x) = kx+b (k、b都是常數) ,一旦確定了哈希函數,那麼添加、獲取元素都需要通過這個哈希函數;

2、除留餘數法:f(x) = x%k (k是常數,k <= m (m為存儲位置長度)) ;

其他幾種方法:

"

細心的小夥伴們估計已經發現我現在很多表都開始用圖片了,這是因為我頭條這裡格式的問題,我放上去還得改半天,太麻煩,還不好看,所以就直接弄好表截圖放上來了

哈希表:通過關鍵碼來映射到值的一個數據結構;

哈希函數:鍵與值映射的一個映射關係;

哈希函數的構建:

常用方法:

1、直接尋址法:f(x) = kx+b (k、b都是常數) ,一旦確定了哈希函數,那麼添加、獲取元素都需要通過這個哈希函數;

2、除留餘數法:f(x) = x%k (k是常數,k <= m (m為存儲位置長度)) ;

其他幾種方法:

哈希表、哈希函數、哈希衝突與解決

哈希衝突:由於哈希函數構造不當,通過同一個哈希函數把兩個不同的數哈希到了同一個位置;m != n ---->f(m) = f(n);哈希衝突無法避免,但可以減少(改變合適的哈希函數還是有可能發生哈希衝突,但衝突的數據會大大減少)。

解決哈希衝突:

常用方法:

1、鏈地址法:數組+鏈表(散列表)

2、探測法:① 線性探測:p(i) = i+c ②非線性探測:p(i) = i+random();

其他幾種方法:

"

細心的小夥伴們估計已經發現我現在很多表都開始用圖片了,這是因為我頭條這裡格式的問題,我放上去還得改半天,太麻煩,還不好看,所以就直接弄好表截圖放上來了

哈希表:通過關鍵碼來映射到值的一個數據結構;

哈希函數:鍵與值映射的一個映射關係;

哈希函數的構建:

常用方法:

1、直接尋址法:f(x) = kx+b (k、b都是常數) ,一旦確定了哈希函數,那麼添加、獲取元素都需要通過這個哈希函數;

2、除留餘數法:f(x) = x%k (k是常數,k <= m (m為存儲位置長度)) ;

其他幾種方法:

哈希表、哈希函數、哈希衝突與解決

哈希衝突:由於哈希函數構造不當,通過同一個哈希函數把兩個不同的數哈希到了同一個位置;m != n ---->f(m) = f(n);哈希衝突無法避免,但可以減少(改變合適的哈希函數還是有可能發生哈希衝突,但衝突的數據會大大減少)。

解決哈希衝突:

常用方法:

1、鏈地址法:數組+鏈表(散列表)

2、探測法:① 線性探測:p(i) = i+c ②非線性探測:p(i) = i+random();

其他幾種方法:

哈希表、哈希函數、哈希衝突與解決

有需要編程視頻的可以私信小七"學習"哦!需要其他資源的也可以私聊小七的!

"

細心的小夥伴們估計已經發現我現在很多表都開始用圖片了,這是因為我頭條這裡格式的問題,我放上去還得改半天,太麻煩,還不好看,所以就直接弄好表截圖放上來了

哈希表:通過關鍵碼來映射到值的一個數據結構;

哈希函數:鍵與值映射的一個映射關係;

哈希函數的構建:

常用方法:

1、直接尋址法:f(x) = kx+b (k、b都是常數) ,一旦確定了哈希函數,那麼添加、獲取元素都需要通過這個哈希函數;

2、除留餘數法:f(x) = x%k (k是常數,k <= m (m為存儲位置長度)) ;

其他幾種方法:

哈希表、哈希函數、哈希衝突與解決

哈希衝突:由於哈希函數構造不當,通過同一個哈希函數把兩個不同的數哈希到了同一個位置;m != n ---->f(m) = f(n);哈希衝突無法避免,但可以減少(改變合適的哈希函數還是有可能發生哈希衝突,但衝突的數據會大大減少)。

解決哈希衝突:

常用方法:

1、鏈地址法:數組+鏈表(散列表)

2、探測法:① 線性探測:p(i) = i+c ②非線性探測:p(i) = i+random();

其他幾種方法:

哈希表、哈希函數、哈希衝突與解決

有需要編程視頻的可以私信小七"學習"哦!需要其他資源的也可以私聊小七的!

哈希表、哈希函數、哈希衝突與解決

8月4號發的,審核一直沒通過,也不知道怎麼回事,只好再發一遍了

"

相關推薦

推薦中...