當前位置:
首頁 >
C++哈希表
發布時間:2024/9/27
27
豆豆
C++哈希表
- 槽總數的選擇
- 關鍵碼范圍較小
- 簡單的哈希函數
- 沖突解決策略
- 開哈希法
- 閉哈希法
- 桶式哈希
- 線性探查
- 解決聚集的方法
- 二次探查
- 雙哈希
槽總數的選擇
關鍵碼范圍較小
由于關鍵碼范圍比較小,可以使用一個槽總數大于關鍵碼總數的表。直接使用槽的下標作為關鍵碼值,此時,不需要將關鍵碼值作為記錄的一部分進行存儲。哈希函數可以直接設計成h(K)=K,但是這種情況比較少見
##關鍵碼范圍較大
如果可能的關鍵碼范圍較大,而同一時間段內存儲的記錄總數較少時。如果槽數的設計和前者匹配通常意味著空間的浪費,而如果和后者匹配又容易導致沖突
除此之外,如果對關鍵碼值的分布特性不了解,也會使得哈希函數的設計更為困難。如果了解關鍵碼值的分布特性,應對使用一個依賴于分布的哈希函數,避免把一組相關的關鍵碼值映射到表的同一個槽中(例如,如果對英文單詞進行哈希,就不應當對第一個字符的值哈希,因為這樣很可能使分
總結